微魔已经在网站上发布了多篇备份相关的文章,希望大家在其中已经获得了自己想要的东西,现在,微魔再补充一下Rsync备份的相关内容,提到Rsync,很多熟识Linux的朋友都不会陌生,很多Linux的镜像都是采用这种方式进行同步的。网络上更是有很多人采用了Rsync配合DNS,为网站架设多个镜像站点的案例。本文仅粗浅的介绍一个使用Rsync进行网站备份的方法,也欢迎大家补充更多内容。
首先,我们假定网站所在的服务器为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