zoukankan      html  css  js  c++  java
  • rsync数据同步工具

    rsync -av  --include="*.fastq.gz" --include="*.fq.gz"  --include="*/" --exclude=* /public/data   ./ 

    rsync用于Linux系统之间的文件同步,效果还是非常好的!故做个记录,以备参考!

    一、rsync简介
    用于替代rcp的一个工具,rsync可以通过rsh或ssh使用,也能以daemon模式去运行,在以daemon方式运行时rsync server会开一个873端口,等待客户端去连接,连接时,rsync server会检查口令是否相符,若通过口令查核,则可以通过进行文件传输,第一次连通完成时,会把整份文件传输一次,以后则就只需进行增量备份;

    二、rsync常用参数
    -v,--verbose  详细模式输出;
    -a,--archive  归档模式,表示以递归的方式传输文件,并保持所有文件属性不变,相当于使用了组合参数-rlptgoD;
    -r, --recursive 对子目录以递归模式处理;
    -l, --links 保留软链结;
    -p, --perms 保持文件权限;
    -t, --times 保持文件时间信息;
    -g, --group 保持文件属组信息;
    -o, --owner 保持文件属主信息;
    -D, --devices 保持设备文件信息;
    -H, --hard-links 保留硬链结;
    -S, --sparse 对稀疏文件进行特殊处理以节省DST的 空间;
    --delete 删除那些DST中SRC没有的文件;
    -z, --compress 对备份的文件在传输时进行压缩处理;

    三、rsync的六种不同的工作模式;
    1)拷贝本地文件;
    当SRC和DES路径信息中不包含冒号":"分隔符时,就启用这种工作模式:
    [root@cmmailapp1 /]# rsync -avSH /home/coremail/ /cmbak/

    2)使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器,当DST路径地址包括冒号":"分隔符时启动该模式;
    [root@cmmailapp1 /]# rsync -avSH /home/coremail/ 192.168.11.12:/home/coremail/

    3)使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器,当SRC地址路径包括冒号":"分隔符时启动该模式;
    [root@cmmailapp2 /]# rsync -avSH 192.168.11.11:/home/coremail/ /home/coremail/

    4)从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。
    如:rsync -av root@172.16.78.192::www /databack

    5)从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。
    如:rsync -av /databack root@172.16.78.192::www

    6)列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。
    如:rsync -v rsync://192.168.11.11/data

    四、rsync服务端的配置;
    环境:192.168.11.11为生产机;192.168.11.12为备份机;
    那么需要192.168.11.11需要作为rsync的client;
    192.168.11.12作为rsync的service端;

    1、192.168.11.12_service端的配置;
    1)[root@cmmailapp2 data]# touch /etc/rsyncd.conf  //此文件为rsync的主配置问题,默认不存在需要手动创建;
    2)定义同步的配置;
    [root@cmmailapp2 data]# cat /etc/rsyncd.conf 
    [data]
    path = /data/
    auth users = coremail
    uid = root
    gid = root
    secrets file = /etc/rsyncd.secrets
    read only = no

    [MySQL]
    Path = /home/coremail/var/mysql            
    auth users = coremail
    uid = root
    gid = root
    secrets file = /etc/rsyncd.secrets
    read only = no

    [cmxt]
    Path = /home/coremail/          
    auth users = coremail
    uid = root
    gid = root
    secrets file = /etc/rsyncd.secrets
    read only = no

    3)定义密码文件/etc/rsyncd.secrets
    [root@cmmailapp2 data]# cat  /etc/rsyncd.secrets 
    coremail:coremail

    4)启动rsync启动服务
    [root@cmmailapp2 data]# cat /etc/xinetd.d/rsync 
    # default: off
    # description: The rsync server is a good addition to an ftp server, as it
    #       allows crc checksumming etc.
    service rsync
    {
            disable = yes           //需要修改为no;
            socket_type     = stream
            wait            = no
            user            = root
            server          = /usr/bin/rsync
            server_args     = --daemon
            log_on_failure  += USERID
    }

    [root@cmmailapp2 data]# chkconfig --level 2345 rsync on
    [root@cmmailapp2 data]# chkconfig rsync on
    [root@cmmailapp2 data]# chkconfig --level 2345 xinetd on
    [root@cmmailapp2 data]# service xinetd restart
    Stopping xinetd: [  OK  ]
    Starting xinetd: [  OK  ]

    2、192.168.11.11_client端的配置;
    [root@cmmailapp1 /]# cat /etc/rsyncd.secrets 
    coremail

    [root@cmmailapp1 /]# rsync -aSvH --password-file=/etc/rsyncd.secrets /home/coremail/coremail@192.168.11.12::data
    [root@cmmailapp1 /]# rsync -aSvH --password-file=/etc/rsyncd.secrets /home/coremail/coremail@192.168.11.12::mysql
    [root@cmmailapp1 /]# rsync -aSvH --password-file=/etc/rsyncd.secrets /home/coremail/coremail@192.168.11.12::cmxt

    五、定义定时自行rsync同步,指定同步的日志所在的路径/var/log/rsync/下;
    [root@cmmailapp1 log]# cat /root/rsync.sh 
    DATE=`date +%Y%m%d%H%M`
    rsync -aSvH --password-file=/etc/rsyncd.secrets /home/coremail/ coremail@192.168.11.12::data>/var/log/rsync.date.$DATE
    rsync -aSvH --password-file=/etc/rsyncd.secrets /home/coremail/ coremail@192.168.11.12::mysql>/var/log/rsync.mysql.$DATE
    rsync -aSvH --password-file=/etc/rsyncd.secrets /home/coremail/ coremail@192.168.11.12::cmxt>/var/log/rsync.cmxt.$DATE

    chmod u+x /root/rsync.sh

    [root@cmmailapp1 log]# crontab -l
    0 3 * * * /root/rsync.sh

    执行时候的日子记录文件:
    [root@cmmailapp1 log]# ls |grep 'rsync'
    rsync.cmxt.201110180915
    rsync.date.201110180915
    rsync.mysql.201110180915

     

    可能會遇到的疑難問題:

    1. Q: 出現以下這個訊息, 是怎麼一回事?

    @ERROR: auth failed on module xxxxx
    rsync: connection unexpectedly closed (90 bytes read so far)
    rsync error: error in rsync protocol data stream (code 12) at io.c(150)
    

    A: 這是因為密碼設錯了, 無法登入成功, 請再檢查一下 rsyncd.secrets 中的密碼設定, 二端是否一致?

    2. Q: 出現以下這個訊息, 是怎麼一回事?

    password file must not be other-accessible

    continuing without password file

    Password:

    A: 這表示 rsyncd.secrets 的檔案權限屬性不對, 應設為 600

    請下 chmod 600 rsyncd.secrets

    3. Q: 出現以下這個訊息, 是怎麼一回事?

    @ERROR: chroot failed
    rsync: connection unexpectedly closed (75 bytes read so far)
    rsync error: error in rsync protocol data stream (code 12) at io.c(150)
    

    A:這通常是您的 rsyncd.conf 中
    的 path 路徑所設的那個目錄並不存在所致.
    請先用 mkdir 開設好備份目錄.

     

    问题一:

    @ERROR: chroot failed

    rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]

    原因:

    服务器端的目录不存在或无权限。创建目录并修正权限可解决问题。

    问题二:

    @ERROR: auth failed on module tee

    rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]

    原因:

    服务器端该模块(tee)需要验证用户名密码,但客户端没有提供正确的用户名密码,认证失败。提供正确的用户名密码解决此问题。

    问题三:

    @ERROR: Unknown module ‘tee_nonexists’

    rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]

    原因:

    服务器不存在指定模块。提供正确的模块名或在服务器端修改成你要的模块以解决问题。

    问题四:

    password file must not be other-accessible

    continuing without password file

    Password:

    原因:

    这是因为rsyncd.pwd rsyncd.secrets的权限不对,应该设置为600。如:chmod 600 rsyncd.pwd

    问题五:

    rsync: failed to connect to 218.107.243.2: No route to host (113)

    rsync error: error in socket IO (code 10) at clientserver.c(104) [receiver=2.6.9]

    原因:

    对方没开机、防火墙阻挡、通过的网络上有防火墙阻挡,都有可能。关闭防火墙,其实就是把tcp udp的873端口打开。

    问题六:

    rsync error: error starting client-server protocol (code 5) at main.c(1524) [Receiver=3.0.7]

    原因:

    /etc/rsyncd.conf配置文件内容有错误。请正确核对配置文件。

    问题七:

    rsync: chown "" failed: Invalid argument (22)

    原因:

    权限无法复制。去掉同步权限的参数即可。(这种情况多见于linux向Windows的时候)

     问题八:

    @ERROR: daemon security issue -- contact admin
    rsync error: error starting client-server protocol (code 5) at main.c(1530) [sender=3.0.6]

    原因:

    同步的目录里面有软连接文件,需要服务器端的/etc/rsyncd.conf打开use chroot = yes。掠过软连接文件。

  • 相关阅读:
    20181205关于android动态权限管理的总结与思考。
    pixel2坑
    Picasso遇到的坑
    集成主流框架搭建项目
    outdoor-youwin
    利用scatter()绘制颜色映射的二次方曲线
    一个有意义的Day类
    [Hadoop] Yarn & k8s
    hadoop 操作
    yarn 图形化监控
  • 原文地址:https://www.cnblogs.com/nkwy2012/p/7373173.html
Copyright © 2011-2022 走看看