一、rsync 简介

  Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,也可以使用 Rsync 同步本地硬盘中的不同目录。 

  Rsync 是用于取代rcp的一个工具,Rsync使用所谓的 “Rsync ” 来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。您可以参考  进一步了解 rsync 的运作机制。

  Rsync支持大多数的类Unix系统,无论是、Solaris还是BSD上都经过了良好的。此外,它在windows平台下也有相应的版本,比较知名的有cwRsync和Sync2NAS。

  Rsync 的初始作者是 Andrew Tridgell 和 Paul Mackerras,它当前由 维护。

  Rsync的基本特点如下:

  1. 可以镜像保存整个目录树和文件系统;

  2. 可以很容易做到保持原来文件的权限、时间、软硬链接等;

  3. 无须特殊权限即可安装;

  4. 优化的流程,文件传输效率高;

  5. 可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接;

  6. 支持匿名传输,以方便进行网站镜像。

  在使用 rsync 进行远程同步时,可以使用两种方式:远程 Shell 方式(建议使用 ssh,用户验证由 ssh 负责)和 C/S 方式(即客户连接远程 rsync 服务器,用户验证由 rsync 服务器负责)。

  无论本地同步目录还是远程同步数据,首次运行时将会把全部文件拷贝一次,以后再运行时将只拷贝有变化的文件(对于新文件)或文件的变化部分(对于原有文件)。

  rsync 在首次复制时没有速度优势,速度不如 tar,因此当数据量很大时您可以考虑先使用 tar 进行首次复制,然后再使用 rsync 进行数据同步。

rsync生产常用参数

参数 说明 默认值
exclude 指定多个由空格隔开的多个文件或目录(相对路径),并将其添加到 exclude 列表中。这等同于在客户端命令中使用 –exclude 来指定模式。
exclude from 指定一个包含 exclude 规则定义的文件名,服务器从该文件中读取 exclude 列表定义。
include 指定多个由空格隔开的多个文件或目录(相对路径),并将其添加到 include 列表中。这等同于在客户端命令中使用 –include 来指定模式 。
include from 指定一个包含 include 规则定义的文件名,服务器从该文件中读取 include 列表定义。

以守护进程(socket的方式传输数据(这个是rsync自身的重要功能)

二、rsync服务器应用案例

A、rsync服务器部署

1.安装两种方式

(1)、yum install -y rsync             ###在线安装rsync        (2)、wget http://pkgs.repoforge.org/rsync/rsync-3.0.9-2.el6.rfx.x86_64.rpm   rpm -ivh rsync-3.0.9-2.el6.rfx.x86_64.rpm    ###下载rsync软件包之后rpm安装

2.查看是否安装成功

[root@A data]# rpm -qa rsync              ###查看是否安装成功      rsync-3.0.6-12.el6.x86_64

3.创建rsync主配置rsyncd.conf文件

[root@A data]# vi /etc/rsyncd.conf #rsync_config___________start#created by donglq 16:01 2016-12-09##rsyncd.conf start##uid = nobodygid = nobodyuse chroot = no    max connections = 200timeout = 300pid file = /var/run/rsyncd.pidlock file = /var/run/rsync.locklog file = /var/log/rsyncd.log[donglq]path = /donglq/ignore errorsread only = falselist = falsehosts allow = 192.168.0.0/24hosts deny = 0.0.0.0/32auth users = rsync_backupsecrets file = /etc/rsync.password[data]path = /data/gnore errorsread only = falselist = falsehosts allow = 192.168.0.0/24hosts deny = 0.0.0.0/32auth users = rsync_backupsecrets file = /etc/rsync_data.password##rsyncd.conf___________end

4.创建rsync虚拟用户密码文件

echo "rsync_backup:123456" >/etc/rsync.password   chmod 600 /etc/rsync.password           echo "rsync_backup:123456" >/etc/rsync_data.passwordchmod 600 /etc/rsync_data.password

5.创建共享文件夹并将其用户属组修改为nobody

[root@A data]mkdir /donglq[root@A data]mkdir /data[root@A data]chmod 600 /donglq /data[root@A data]chown nobody.nobody /data /donglq

6.rsync --daemon                        ###daemon模式启动rsync       

[root@A data]# netstat -lntup|grep 873      ###查看rsync是否启动tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN      1380/rsync          tcp        0      0 :::873                      :::*                        LISTEN      1380/rsync

B、rsync客户端部署

1. 安装  

yum install -y rsync                ###在线安装rsync

2. 查看是否安装成功

netstat -lntup|grep 873

3. 创建密码文件

echo "123456" >/etc/rsync.password4chmod 600 /etc/rsync.password echo "123456" >/etc/rsync_data.passwordchmod 600 /etc/rsync_data.password

C、rsync调试

[root@B ~]# rsync -avz rsync_backup@192.168.129.128::donglq /data/ --password-file=/etc/rsync.password receiving incremental file list./11023456789.ICE-unix/sent 261 bytes  received 570 bytes  1662.00 bytes/sectotal size is 0  speedup is 0.00[root@C data]#  rsync -avz rsync_backup@192.168.129.128::data /data/ --password-file=/etc/rsync_data.password receiving incremental file list./1.txt/1/sent 73 bytes  received 156 bytes  458.00 bytes/sectotal size is 0  speedup is 0.00

配置完毕

注意事项:

在整个安装过程中,能拷贝的参数尽量不要用手输,防止出错。密码文件及模块文件夹权限要设置好。

谨慎细心一点是不会有问题的。

参考:

http://blog.csdn.net/wjciayf/article/details/51812369