摘要: rsync是Linux操作系统下面的同步工具。rsync可以非常高效的让你把数据从一个地方传送到另一个地方。实际上rsync是linux世界中用来备份的标准工具。rsync会检查每个文件而且只传输有变化的文件,所以它能节省时间。 同步一台机子中的两个文件夹...
rsync是Linux操作系统下面的同步工具。rsync可以非常高效的让你把数据从一个地方传送到另一个地方。实际上rsync是linux世界中用来备份的标准工具。rsync会检查每个文件而且只传输有变化的文件,所以它能节省时间。
-
同步一台机子中的两个文件夹.
rsync -av /path/to/source /path/to/dist
-
同步一个机子中的文件夹到另外一台机子
rsync -av /path/to/source user@machine:/path/to/dist
-
默认的rsync只会传输新的文件和文件增量,但是不会删除不存在的文件。如果你确实想要删除已经不存在文件,你需要加上
--delete
参数.rsync -av --delete /path/to/source user@machine:/path/to/dist
-
下面这个例子,我们只同步.iso文件.
rsync -zrv -include="*.iso" host:/home/nixtutor /home/denny
查看rsync的详细用法,请用 man rsync
命令。
Linux用 rsync 同步文件时跳过指定目录的方法
某测试站点,在某个节点的时候需要同步到正式站点去,但是里面的config目录不能覆盖
需求是:某测试站点,在某个节点的时候需要同步到正式站点去,但是里面的config目录不能覆盖,
rsync -vauP --exclude=".*" --exclude="common/config" projectA/ projectB
简单注释下
-a
参数,相当于-rlptgoD,-r 是递归 -l 是链接文件,意思是拷贝链接文件;-p 表示保持文件原有权限;-t 保持文件原有时间;-g 保持文件原有用户组;-o 保持文件原有属主;-D 相当于块设备文件;
-P
传输进度;
-v
冗余模式,查看到文件列表等
-u
update模式,如果目标文件新于源文件,则跳过
第一个exclude表示跳过所有.开头的隐藏文件
第二个表示调过projectA/common/config目录,因为config目录下的文件,轻易不需改变,如果需要手动调整即可,注意这个参数是后面SRC参数的相对路径
关于同步的是目录还是下面内容的问题:
同步文件夹:
rsync -av /path/to/source user@machine:/path/to/dist
同步文件夹里面的内容:
rsync -av /path/to/source/ user@machine:/path/to/dist
注意: 前面的加不加 /
是不一样的;后面的是始终是文件夹, 加不加 /
都一样。
/dir01/
表示目录下的所有内容; /dir01
表示的目录本身。这个例子中, 如果是要将 /dir01
整个目录拷贝到 /dir02
下,那么就要写 /dir01
;如果是拷贝目录下的内容所以要加上 /dir01/
注意后面没有 /
。
指定端口
我们可以将ssh隧道用作安全包装器。 默认情况下,我们将连接到远程系统端口 22
。如果远程系统端口不同于 22
,则应明确指定。我们将使用 -e
选项。 在本示例中,我们将连接poftut2远程系统端口 2222
$ rsync -e 'ssh -p 2222' user@machine:/home /mnt/home