Rsync 是 Linux 自带的一个文件同步工具,支持差异备份,支持用户身份验证,还能跟SSH结合起来,实现数据的安全传输。实践中,常常用它来作为备份工具。
当我们用 Rsync 来备份的时候,通常的做法是:某一台服务器需要备份,那么我们就在那台服务器上去配置 Rsync 服务,写配置文件,启动 Rsync 服务进程,然后在备份服务器上为该服务器添加一条自动作业命令,从而实现对该服务器数据的备份。
笔者在实践中,觉得 Rsync 的这种常用的备份方式不是太理想,于是就对其做了些改动,下图是 Rsync 常用的备份方式跟笔者改进后的备份方式的比较:
下面我们说说配置问题:
因第一种方法(普通的备份方法)使用得比较多,所以就不在举例了。下面说说第二种方法(改进后的备份方法)的具体配置。
1、在备份中心上执行下列操作:
第一步:写一个BASH脚本,作具体的拷贝文件的工作,例如:
rsync -avz --rsh=\"ssh -l xx-rsync-user\" \\ --exclude-from=/opt/script/data/181/exclude_dirs \\ xxx.xx.xxx.181:/usr/my_applications /opt/backup/xxx.xxx.xxx.181/ 注:xx-rsync-user 是服务器xxx.xx.xxx.181上的一个普通权限用户,该用户只有对目录/usr/my_applications的读权限。
第二步:写一个Expect脚本,调用第一步的BASH脚本,目的是给BASH脚本输入密码,例如: spawn date \"+%Y-%m-%d %H:%M\" spawn /opt/script/prod/181.sh expect \"password:\" { send \"<用户xx-rsync-user的密码>\\n\" } 第三步:建立一个crontab,调用第二步的Expect脚本,以定时自动备份,例如:
10 * * * * /opt/script/prod/181.exp >> /opt/script/data/181/181.log
2. 在需要备份资料的服务器上执行下列操作:
第一步:登录到服务器xxx.xx.xxx.181上去,建立用户xx-rsync-user,并授予其对/user/my_applications目录的只读权限;
如果有其它的服务器需要备份,那么重复上述步骤就OK了。