目的:每天定时将A服务器和B服务器上的数据压缩后备份到C服务器
1.选择免密码登陆
1.1分别在A,B服务器上的根目录下执行:
ssh-keygen -t rsa
--然后一直回车键.最后在~目录会生成 .ssh文件,里面有三个文件,
authorized_keys id_rsa id_rsa.pub
authorized_keys:存放远程免密登录的公钥,主要通过这个文件记录多台机器的公钥
id_rsa : 生成的私钥文件
id_rsa.pub : 生成的公钥文件
know_hosts : 已知的主机公钥清单
其中
id_rsa.pub为生成的公钥,将其拷贝到C服务器,authorized_keys,know_hosts在全新的服务器上没有1.2 分别将A,B上的id_rsa.pub,通过scp传到CA:
scp -p -P<端口> ~/.ssh/id_rsa.pub [email protected]<remoteIP>:/root/.ssh/A_rsa.pub
B:
scp -p -P<端口> ~/.ssh/id_rsa.pub [email protected]<remoteIP>:/root/.ssh/B_rsa.pub
--scp 命令,-P为指定端口,不指定为默认的22端口.
然后在C服务器上将传过来的文件追加到authorized_keys:
//追加A cat /root/.ssh/A_rsa.pub >> /root/.ssh/authorized_keys //追加B cat /root/.ssh/B_rsa.pub >> /root/.ssh/authorized_keys
验证是否成功:
ssh -P<端口> <remote>
能进去就表示成功.
2备份脚本的实现
2.1
在备份文件之前将其压缩,并生成md5,在C服务器进行md5验证,文件一致后,删除A服务器上对应的md5,gz,以及20天之前的文件
#!/bin/bash ######### cache ########### #local filepath localpath=$1 #topath topath=$2 #date date=$(date +%y%m%d) filename=*.log #status mdstatus=1 #md5 localfile #md5sum ${localpath}${filename} > "${date}".md5 #cd cd "${localpath}" #tar localfile tar zcf ${filename}"-"${date}.tar.gz ${filename} #md5 local tar md5sum ${filename}"-"${date}.tar.gz > "${date}".md5 #scp scp -P1022 ${filename}"-"${date}.tar.gz [email protected]<remoteIP>:${topath} scp -P1022 ${date}.md5 [email protected]<remoteIP>:${topath} #ssh mdstatus=`ssh [email protected]<remoteIP> -p 1022 -tq << remotessh cd "${topath}" md5sum -c --status ${date}.md5 echo $? exit remotessh` #delete if [ "${mdstatus}" -eq 0 ] ; then echo "success" find ${localpath} -mtime +20 -name "*.log" -exec rm -rf {} \; rm -rf ${localpath}*.gz rm -rf ${localparh}*.md5 fi
3.定时任务执行脚本
crontab -e
分 时 日 月 周 [命令]
* * * * * [commond]
0 8 * * * [脚本路径]
完成
时间: 2024-10-25 15:19:50