Rsync远程数据同步工具
优点:
1、增量备份,支持socket(daemon),集中备份(支持维拉,以客户端为参照物)
2、远程SHEDLL通道模式还可以加密(SSH)传输,socket(daemon)需要加密传输,可以利用v*n服务或ipsec服务
缺点:
1、大量小文件时同步时,对比时间较长,有时同步过程中,rsync进程可能会停止,僵死了。
2、同步大文件,10G这样的大文件有时也会出现问题,中断。未完整同步前,是隐藏文件,可以通过续传(--partial )等参数实现传输
3、一次性远程拷贝看引用scp,大量小文件要打成一个包再拷贝。
特别要注意的是:
客户端的密码文件所有者必须是本地用户,否则会包加载模块错误。
拷贝本地文件:
常用选项:
-a 归档模式,表示以递归方式传输文件,并保持所有文件属性
-z 对备份的文件在传输时进行压缩处理。
-v 输出详情。
###特别要注意的是:备份的时候,目录后有 / ,根没有杠 / ,区别很大。
###有杠表示这个目录下的,没有刚则表示这个目录。
rsync -azv --delete /old/ /tmp/
#保持完全备份,多余的删掉,没有的增加。
rsync -azvP -e 'ssh -p 22' /etc/ [email protected]:/tmp/
#使用root身份用 ssh 通道传输,将 本机 /etc/ 目录 拷贝到目标主机的 /tmp/ 目录下。
## 不指定 -e 默认的就是 ssh ,如果修改了ssh的默认端口需要重新指定
rsync -azvP -e 'ssh -p 22' [email protected]:/opt /tmp/
#拉取主机中的备份文件,
服务端需要手动创建爱你Rsync的主配置文件:
vim /etc/rsyncd.conf
创建程序用户:
启动服务:
修改配置文件所属组为:rsync 程序用户
服务端创建path 目录所有这必须是 程序用户:rsync
创建虚拟用户帐号及密码,并修改文件权限:
客户端交互试传输:
客户端创建密码,实现免交互远程传输:
客户端拉取服务端的备份数据:
服务启动脚本:
#!/bin/bash
################################
# why sheelp 1?
# maybe the program is running ,then over
#
###############################
. /etc/rc.d/init.d/functions
#启用rsync
start(){
rsync --daemon
sleep 1
if [ $? -eq 0 -a $(ps -ef | grep -v grep | grep rsync | wc -l) -gt 0 ]; then
action "Starting Rsync:" /bin/true
else
action "Starting Rsync:" /bin/false
fi
}
#停止rsync
stop(){
pkill rsync
sleep 1
if [ $(ps -ef | grep -v grep | grep "rsync --daemon" | wc -l) -ge 1 ]; then
action "Stopping Rsync:" /bin/false
else
action "Stopping Rsync:" /bin/true
fi
}
case "$1" in
"start")
start
;;
"stop")
stop
;;
"restart")
stop
start
;;
*)
echo "Useage: $0 {start|stop|restart}"
;;
esac