remote synchronize

features

  • 可以实现跨平台、全量、增量、本地、远程数据同步备份
  • 同步数据镜像时,通过“quick check”算法,仅同步大小、最后修改时间发生变化的文件、目录
    • 当然,也可以根据权限、属主等属性变化进行同步

命令

shell模式:使用ssh程序传送

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

daemon模式:使用tcp连接rsync daemon。需要远程机器上开启了rsync daemon,默认端口873

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

参数

-n 执行一次空运行。不做任何改变,但是会显示与真实执行一样的结果。可用于在正真执行前,严查命令是否正确。
-v verbose
-a "archive mode" 会启用下面参数: equals -rlptgoD
    -r 递归 
    -l 同步软链接
    -H 同步硬链接
    -D 同步设备文件
    -p 保留权限
    -o 保留所有者
    -g 保留所属组
    -t 保留时间戳
-A 同步时保留ACLs内容
-X 同步时保留selinux内容
--delete 同步删除(删除目标文件夹中无关的内容)

     --iconv=CONVERT_SPEC    request charset conversion of filenames

 -z, --compress              compress file data during the transfer
 -h, --human-readable        output numbers in a human-readable format
     --progress              show progress during transfer

例子

rsync -a file/photo/ secret/photo/ -nv

问题:File name too long

--iconv=utf8

实时同步

要实现实时同步,需要在目标机器上开启一个后台进程,实时监听某一个具体文件或目录的变化(增加、删除、修改)

  • inotify
  • sersync