有两个重要的网站,担心出现物理故障,所以需要双机备份,以免数据丢失,把过程记录一下。
linux双机备份最简单的方案当然是使用scp或者rsync命令结合SSH来进行。SCP命令是完全的拷贝整个目录结构和数据,而rsync命令只是备份两个服务器之间有差异的目录结构和数据。由于网站相当的大,差不多有200多G数据,所以这里选择rsync命令。
比如A机为本地服务器,ip为172.25.217.1,B机为远程服务器,ip为172.25.217.2。现在的目的是把B机的特定目录内容备份到A机,这里假定两台服务器需要同步的内容都是/www/web/baishujun/public_html/
,SSH端口为31。
那么SCP执行备份的命令为
scp -p31 -r root@172.25.217.2:/www/web/baishujun/public_html/* /www/web/baishujun/public_html
rsync命令为
rsync -vzrtopg --progress -e 'ssh -p 31' --delete root@172.25.217.2:/www/web/baishujun/public_html/* /www/web/baishujun/public_html
这个命令需要手动输入密码,显然对于自动执行备份来说,这不合适。我们采用证书登陆ssh的方法来避免输入密码。
在A机,执行命令cd /root/.ssh/
,进入ssh目录,在这里我们需要生成ssh证书,通过 ssh-keygen -d
命令来生成,之后一直回车就好了。
[root@baishujun]# cd /root/.ssh/ [root@baishujun .ssh]# ssh-keygen -d Generating public/private dsa key pair. Enter file in which to save the key (/root/.ssh/id_dsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_dsa. Your public key has been saved in /root/.ssh/id_dsa.pub.
这样就在 /root/.ssh/目录获得了两个文件id_dsa和id_dsa.pub两个文件,id_dsa.pub是公钥,id_dsa是密钥。
为了免密码登陆ssh,我们需要把id_dsa.pub放到B机的ssh目录中去。
这个通过ssh命令很简单
scp -P31 id_dsa.pub root@172.25.217.2:/root/.ssh/authorized_keys2
这里有一个要注意,scp命令的P参数一定要大写,ssh命令的p参数一定要小写!
并且这里公钥在B机一定要改名为authorized_keys2,不然无法自动登陆ssh。
做好了这个准备之后,我们可以把rsync 这个命令放到sh脚本里面。
执行命令vi backup2.sh
,输入命令
#!/bin/bash rsync -vzrtopg -e 'ssh -p 31' --delete root@172.25.217.2:/www/web/baishujun/public_html/* /www/web/baishujun/public_html
wq命令保存就好了。wdcp管理系统中有一个计划任务,相当好用,把这个脚本加入“任务计划”中,需要绝对路径,或者把这个脚本cp到wdcp的shell目录/www/wdlinux/wdcp/shell/
,这样输入文件名就可以了。
如果没有使用wdcp系统,那么自己安装个crond来周期性执行脚本就好了。
转载请注明:百蔬君 » 【原创文章】WDCP管理系统中实现远程服务器自动备份