Linux系统下常用数据文件/目录内容同步命令rsync,常用方式如下
$ rsync -avz --progress /sourcefolder /targetfolder
$ rsync -avz --progress /sourcefolder/ /targetfolder
参数选项
- 关闭 -z 选项,不使用压缩;-z参数仅对传输过程中压缩网络流量有用,会消耗CPU资源。
- 使用 -W 选项,整个复制文件,禁用增量/差异比较;当文件时间/大小不同时,rsync将比较差异并且仅更新更改文件。
$ rsync -avW --progress /sourcefolder /targetfolder
以上rsync执行速度与常用cp速度基本一致。
其它参数设置
- --no-compress 有可能会加快传输速度
- --dry-run 模拟运行结果,验证命令是否正确
- --remove-source-files 在rsync命令的发送方删除作为传输一部分并已在接收方成功复制的文件
- -A,X,E涵盖了-a未涵盖的扩展属性和权限
- -l 代表软链接
- -H 代表硬链接
- -h 代表人类可读
- -S 处理稀疏文件 -如果您没有稀疏文件,则不会受到伤害
- --exclude-from 排除可能不需要的文件,减少传输时间,但此参数并不会增加传输速度
- -S/ --sparse,将空序列变为稀疏块
- --partial/-P 是--partial --progress:保存任何部分传输的文件以供将来恢复
- --no-whole-file 需要重新发送的文件内容,都会使用增量传输,读取部分内容通常比全部快
- --inplace 避免文件复制(但前提是在整个传输完成之前没有任何内容读取目标)
- --delete 在rsync命令的接收方,即从目标目录中删除无关的文件;注意与--remove-source-files区别
输出发送到文件中,命令格式如下:
$ rsync -a /sourcefolder /targetfolder 1>/rsync.out 2>/rsync.err
- 1>将内容输出rsync.out文件
- 2>将错误消息输出rsync.err文件
结合以上参数,优化后的rsync命令如下:
rsync -avAXEWSlHh /sourcefolder /targetfolder --no-compress --info=progress2 --dry-run
远程同步 除本地两个目录间数据同步外,rsync使用更多的场景为远程目录间进行同步,可将本地内容同步到指定IP的远程目录下,反之亦然;ssh协议下命令格式如下:
$ rsync -avW --progress /sourcefolder user@remote_host_ip:/targetfolder