首页 > 代码库 > 运维过程中rsync的使用

运维过程中rsync的使用

一 rsync介绍

rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。

rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,我们下面就对它的选项一一进行分析说明。

语法

1 rsync [OPTION]... SRC DEST

2 rsync [OPTION]... SRC [USER@]host:DEST

3 rsync [OPTION]... [USER@]HOST:SRC DEST

4 rsync [OPTION]... [USER@]HOST::SRC DEST

5 rsync [OPTION]... SRC [USER@]HOST::DEST

6 rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]

对应于以上六种命令格式,rsync有六种不同的工作模式:

1 拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。如:rsync -a /data /backup

2 使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。如:rsync -avz *.c foo:src

3 使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。如:rsync -avz foo:src/bar /data

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

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

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


参考: http://man.linuxde.net/rsync

     

二 运维过程中,使用rsync的架构图

技术分享

   1 比较常用的,是pull的模式。

   2 从第一部分介绍,可以得知RSYNC有6种模式,最常用的是第4 和 第5种。

   3 从第一部分介绍得知,从rsync daemon拉取相应的文件时,可以进行简单的用户认证(即让客户端输入相应的用户名密码之后,方可拉取文件)。实际上

在运维工作过程中,极少用到这样的用户认证方式。 为什么呢? 原因有以下几点:

      1 实际管理的服务器,都处于内网,相对安全可以直接拉取,而无需验证。

      2 实际管理的服务器,在公司内部都有服务的概念,如果一个服务要扩容机器,扩容机器应该是运维工作中出现次数最高的操作,而运维工作又要求这个时间应该减少到最低。而rsync的用户密码又是存储在普通文件中的,会给扩容服务,带来相当大的成本。因此常常不用到这个技能。

      3 贴一个rsync daemon的配置文件在这里:

          

pid file = /var/run/rsyncd.pid
port = 873
address = 0.0.0.0
uid = root
gid = root
max connections = 15
lock file = /var/run/rsync.lock
log file = /var/log/rsync.log
transfer logging = yes
log format = %t %a %m %f %b
timeout = 300
strict modes = yes

[backup]
path = /data/wwwroot
list=yes
hosts allow = 192.168.20.0/24 172.16.0.0/16
read only = no
write only = no
use chroot =no
#ignore errors
#auth users = test1
#secrets file = /etc/rsyncd/rsyncd.secrets 

    daemon 运行: rsync --daemon --config=/etc/rsync.conf

    客户端运行:  rsync -avz 服务器IP::服务器模块  本地目录 ,比如  rsync -avz 10.1.1.1::backup /tmp/server/

       

三 rsync常见报错

     待补充。建议每次遇到错误时,都google,记录。

 

四 rsync升级版,sersync2

     sersync2出现,是为了解决这样一个问题: 

          当2个服务器之间要进行触发更新时,使用sersync2。( A服务器是源服务器,要主动Push文件到B服务器上。)比如A服务器的/tmp/a/目录 和 B服务器的/tmp/b/目录要进行触发更新,比如A服务器这边一有文件更新(包括文件和目录的增、删、改),就触发B服务器去同步,而且仅仅只同步更新的部分。 默认rsync只能把/tmp/a/目录全部检查一遍,然后进行同步,如果/tmp/a/目录非常大,比如有几百G,那么这样进行实时同步的话,服务器消耗的成本(CPU、带宽、IO)都是比较高的

     关于sersync的安装和使用,参考: http://www.osyunwei.com/archives/7447.html

     

         

 

运维过程中rsync的使用