Rsync(remote synchronize)是一个远程数据同步工具;这篇文章主要对rsync命令的使用作简要的总结。
Rsync简介
Rsync可通过LAN/WAN快速同步多台主机之间的文件;也可以使用rsync同步本地硬盘中的不同目录。它使用所谓的rsync算法进行数据 同步,这种算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。rsync的初始作者是Andrew Tridgell和Paul Mackerras,目前由http://rsync.samba.org维护。
在使用rsync进行远程同步时,可以使用两种方式:
- 远程Shell方式(建议使用ssh,用户验证由ssh负责)
- C/S方式(即客户连接远程rsync服务器,用户验证由rsync服务器负责)。
Rsync命令格式
rsync [OPTION…] SRC… [DEST] #在本地进行复制操作
rsync [OPTION…] [USER@]HOST:SRC… [DEST] #拉动作,从远程主机拉文件到本地
rsync [OPTION…] SRC… [USER@]HOST:DEST #推动作,把本地文件推送到远程主机
通过rsync服务器访问:
Pull: rsync [OPTION…] [USER@]HOST::SRC… [DEST]
Pull: rsync [OPTION…] rsync://[USER@]HOST[:PORT]/SRC… [DEST]
Push: rsync [OPTION…] SRC… [USER@]HOST::DEST
Push: rsync [OPTION…] SRC… rsync://[USER@]HOST[:PORT]/DEST
说明:
SRC是要同步的源位置;DEST是要同步的目标位置;OPTION是rsync的参数选项;
使用远程shell同步时,主机名与资源之间使用单个冒号“:”作为分隔符;
使用rsync服务器同步时,主机名与资源之间使用两个冒号“::”作为分隔符;
当访问rsync服务器时也可以使用rsync://URL;
Rsync使用实例
1. 在本地目录进行数据的复制:
$ rsync -zva /dev/mytest/ /opt/project/
使用-a选项保留原文件时间戳、属主/属组、权限属性,包含递归的作用;使用-z选项表示传输前进行压缩;使用-v选项显示命令执行详细信息。
$ rsync -zvau --existing /dev/mytest/ /opt/project/
使用 –existing 选项可只对目的地已经有的文件进行同步,而不理会源目录新增的文件;如果对源文件和目的地文件均作了修改,同时想将源文件作的修改同步到目的地,但又保留对目的地文件的更改,此时可以使用-u 选项。
$ rsync -zva --max-size='1M' /dev/mytest/ /opt/project/
使用–max-size选项可以限制传输文件的最大大小,即大于–max-size设置的值的文件不进行传输。
2. 本地和远程主机数据的同步 :
$ rsync -azv --delete --progress /home/test/dev/ caiyiting@192.168.1.201:/home/test/
把本地数据同步到远程主机;使用–delete选项能删除不存在于源目录的目的地文件或文件夹;使用–progress选项可以显示同步的进度。
$ rsync --delete -avzP -e 'ssh -p 2222' root@192.168.1.201:/opt/* /data
从远程主机同步数据到本地;使用–partial或-P选项能保留那些因故没有完全传输的文件,以加快随后的再次传输的速度;使用-e ‘ssh -p 2222’指定使用SSH通道传输,且端口号为2222。
3. 筛选rsync同步的内容:
$ rsync -avz --include '*/' --exclude '*' root@192.168.1.201:/var/wwwroot/ /opt/wwwroot/
使用–exclude 选项排除源目录中要传输的文件;使用–include 选项指定要传输的文件;上面的例子仅同步目录结构而忽略掉目录中的文件。包含(include)和排除(exclude)规则的语法参见rsync man page。
4. 通过rsync服务器同步数据
$ rsync -vzrtopg --delete test@192.168.1.201::Data /opt/data --password-file=/etc/rsyncd.secrets
把远程rsync服务器的资源Data推送到指定的本地目录中;使用选项–password-file 指定同步的密钥;使用选项-r 能够递归拷贝目录;使用-t或–times 选项能够保持文件的时间信息;使用-o或–owner 选项保持文件属主信息;使用-p或–perms 选项保持文件权限;使用-g或–group 选项 保持文件属组信息。
$ rsync -aqzH --delete --delay-updates rsync://mirrors.sohu.com/ubuntu/ /var/www/mirror/ubuntu
从提供rsync 服务的镜像站点同步镜像到本地;使用-q 选项实现精简输出模式;使用–delay-updates 选项能将正在更新的文件先保存到临时目录,待传输完毕再更新目标文件。
更多的rsync的选项,可参看rsync man page。
参考文章:
http://rsync.samba.org/ftp/rsync/rsync.html