rsync有三种工作方式:
(1).本地文件系统上实现同步。命令行语法格式为上述"Local"段的格式。
(2).本地主机使用远程shell和远程主机通信。命令行语法格式为上述"Access via remote shell"段的格式。
(3).本地主机通过网络套接字连接远程主机上的rsync daemon。命令行语法格式为上述"Access via rsync daemon"段的格式。
前两者的本质是通过管道通信,即使是远程shell。而方式(3)则是让远程主机上运行rsync服务,使其监听在一个端口上,等待客户端的连接。
rsync格式
Local: rsync [OPTION...] SRC... [DEST] Access via remote shell: Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST] Push: rsync [OPTION...] SRC... [USER@]HOST:DEST Access via rsync daemon: Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST] rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST] Push: rsync [OPTION...] SRC... [USER@]HOST::DEST rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
[root@Lee ~]# /usr/bin/rsync -aRczqp --delete --delete-before --timeout=60 /tmp/Login /back/server # 在本地同步
[root@Lee ~]# /usr/bin/rsync -aRczqp --delete --delete-before --timeout=60 --rsh='ssh' --timeout=60 /tmp/Login 192.168.1.2:/back/server #远程同步
注意一点源路径如果是一个目录的话,带上尾随斜线和不带尾随斜线是不一样的,不带尾随斜线表示的是整个目录包括目录本身,带上尾随斜线表示的是目录中的文件,不包括目录本身。举例如下:
[root@Lee ~]# rsync -a /tmp/Login /back/server
[root@Lee ~]# rsync -a /tmp/Login/ /back/server
第一个命令会在/tmp目录下创建etc目录,而第二个命令不会在/tmp目录下创建Login目录,源路径/Login/中的所有文件都直接放在/tmp目录下。
常用参数
-a 包含-rtplgoD -r 同步目录时要加上,类似cp时的-r选项 -v 同步时显示一些信息,让我们知道同步的过程 -l 保留软连接 -L 加上该选项后,同步软链接时会把源文件给同步 -p 保持文件的权限属性 -o 保持文件的属主 -g 保持文件的属组 -D 保持设备文件信息 -t 保持文件的时间属性 --delete 删除DEST中SRC没有的文件 --exclude 过滤指定文件,如--exclude “logs”会把文件名包含logs的文件或者目录过滤掉,不同步 -P 显示同步过程,比如速率,比-v更加详细 -u 加上该选项后,如果DEST中的文件比SRC新,则不同步 -z 传输时压缩