linux中使用Rsync实现网站自动备份(增量备份)

作者:简简单单 2015-06-09


首先,我们假定网站所在的服务器为A服务器,备份服务器为B服务器。安装rsync的方法就不说了,Linux直接yum/apt-get install rsync就可以了

1.用ssh-key-gen命令在A服务器上创建公钥和密钥(目的是免密码登录B服务器)

ssh-keygen -t rsa

2.在A服务器上运行ssh-copy-id命令把公钥复制到B服务器(.ssh/authorized_key)上

ssh-copy-id -i ~/.ssh/id_rsa.pub root@B服务器的ip

期间需要输入B服务器的密码

如果出现形如如下错误

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
xxxxxxxx
Please contact your system administrator.
Add correct host key in /home/conbar/.ssh/known_hosts to get rid of this message.
Offending key in /home/conbar/.ssh/known_hosts:10
RSA host key for xxxxxx has changed and you have requested strict checking.
Host key verification failed.

在A服务器下运行如下命令

ssh-keygen -R B服务器的ip

3.在A服务器上尝试登录B服务器

ssh B服务器ip

如果成功就没问题了

4.A服务器建立备份脚本(本文示例是在/root下建立了backup.sh文件):

示例1(先打包再同步):

#!/bin/bash
echo "Now packing your database..."
mysqldump -uroot -p数据库密码 数据库名称> backup.sql
echo "Now your files..."
tar zcvfP backup.tar.gz 网站目录(如/home/wwwroot)
echo "rsync start..."
echo "Database file is under rsync..."
rsync -avz -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress /root/backup.sql B服务器ip:/home/
echo "Now your files..."
rsync -avz -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress /root/backup.tar.gz B服务器ip:/home/
echo "Complete!"

示例2(直接同步网站目录,可实现增量备份):

#!/bin/bash
echo "Now packing your database..."
mysqldump -uroot -p数据库密码 数据库名称> backup.sql
echo "rsync start..."
echo "Database file is under rsync..."
rsync -avz -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress /root/backup.sql B服务器ip:/home/
echo "Now your files..."
rsync -avz -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress /home/wwwroot B服务器ip:/home/
echo "Complete!"

5.为备份脚本增加运行权限

chmod +x backup.sh

运行sh backup.sh进行备份尝试

6.设置crontab(crontab -e命令)进行定期备份(每周二、周四凌晨4点开始备份)

# m h  dom mon dow   command
0 4 * * 1,4       /bin/bash /root/backup.sh

相关文章

精彩推荐