目的:每天定时将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传到C
A:
scp -p -P<端口> ~/.ssh/id_rsa.pub root@:/root/.ssh/A_rsa.pub
B:
scp -p -P<端口> ~/.ssh/id_rsa.pub root@:/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<端口>
能进去就表示成功.
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 root@: topathscp−P1022 {date}.md5 root@<remoteIP>:${topath}
ssh
mdstatus=ssh root@<remoteIP> -p 1022 -tq << remotessh
cd "${topath}"
md5sum -c --status ${date}.md5
echo $?
exit
remotessh
delete
if [ “
mdstatus”−eq0];thenecho“success”find
{localpath} -mtime +20 -name “*.log” -exec rm -rf {} \;
rm -rf
localpath∗.gzrm−rf
{localparh}*.md5
fi
复制代码
3.定时任务执行脚本
crontab -e
分 时 日 月 周 [命令]
-
-
-
-
- [commond]
-
-
-
0 8 * * * [脚本路径]
完成