Rsync远程数据同步工具

来源:互联网 发布:office软件卸载不了 编辑:程序博客网 时间:2024/05/21 09:38
优点:
     1、增量备份,支持socket(daemon),集中备份(支持维拉,以客户端为参照物)
      2、远程SHEDLL通道模式还可以加密(SSH)传输,socket(daemon)需要加密传输,可以利用vpn服务或ipsec服务
缺点:
     1、大量小文件时同步时,对比时间较长,有时同步过程中,rsync进程可能会停止,僵死了。
     2、同步大文件,10G这样的大文件有时也会出现问题,中断。未完整同步前,是隐藏文件,可以通过续传(--partial )等参数实现传输
     3、一次性远程拷贝看引用scp,大量小文件要打成一个包再拷贝。

特别要注意的是:
     客户端的密码文件所有者必须是本地用户,否则会包加载模块错误。

拷贝本地文件:

常用选项:
-a     归档模式,表示以递归方式传输文件,并保持所有文件属性
-z     对备份的文件在传输时进行压缩处理。    
-v     输出详情。
###特别要注意的是:备份的时候,目录后有 / ,根没有杠 / ,区别很大。
###有杠表示这个目录下的,没有刚则表示这个目录。

     rsync  -azv   --delete  /old/  /tmp/ 
#保持完全备份,多余的删掉,没有的增加。

     rsync  -azvP  -e  'ssh  -p  22'  /etc/   root@192.168.1.116:/tmp/
#使用root身份用 ssh 通道传输,将 本机  /etc/ 目录  拷贝到目标主机的  /tmp/ 目录下。
## 不指定 -e  默认的就是  ssh ,如果修改了ssh的默认端口需要重新指定

     rsync  -azvP  -e  'ssh   -p  22'  root@192.168.1.116:/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



原创粉丝点击