不正常的使用rsync可能会造成灾难性的后果,因此建议先带-n
跑一次试试,由于下面的情况,强烈建议每次跑之前都先--dry-run
请务必注意Linux命令的路径问题,带不带’/‘是不一样的,不带’/‘代表的文件夹本身,带’/‘则会表示这是一个路径,通常来说,目标路径建议最后跟上’/‘,不是很理解的话,建议带-n
先跑一次。
请务必注意如果rsync发现元数据不一致会需要整个档案重传。所以请注意是通过是ssh拷还是nfs挂载拷,混弄的话,会做无用功rsync -avPlHi source destination --log-file=$HOME/.rsync.log
其中 source destination 都可以使用ssh
root@ip:/目录
常用参数
-z
压缩,该参数会显著影响大文件的传输速度,大文件或者在内容本身为有损压缩或者压缩包的情况下不要开,但是因为 rsync 是单线程,小文件较 多文本 或者 code 多的话,开会比较好且 CPU 性能足够的话可以开(不过大文件可能瞬间就把进度追上来了,rsync的压缩并不会把cpu跑满,只会跑一点点并且影响写入速度)。-a
参数表示存档模式,保存所有的元数据,比如修改时间(modification time)、权限、所有者等,并且软链接也会同步过去。(理论来说,请务必确认是否需要使用这个参数,如果不使用,建议不要用rsync,寻找其他的替代方案。rsync基本所有功能,都基于此参数)--delete
删除目标路径中源目录不存在的文件,通常用于同步,源目录删除东西,新目录也会删除。--delete-excluded
包含--delete
,进一步的,删除目标路径中列入排除的文件目录-u, --update
仅仅进行更新,也就是跳过所有已经存在于 DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件)--ignore-existing
参数表示只要该文件在目标目录中已经存在,就跳过去,不再同步这些文件。-n
参数或--dry-run
参数模拟将要执行的操作,而并不真的执行。配合-v
参数使用,可以看到哪些内容会被同步过去。-P
参数是–progress和–partial这两个参数的结合。--remove-source-files
字面意思,注意不要乱用--delete
(但是会保留空文件夹)--exclude
排除特定文件或目录,相对路径,注意是相对,如果您想使用单个--exclude
选项,则可以用大括号{}列出要排除的文件和目录,用逗号分隔--exclude-from
排除特定文件或目录,相较于上面,这个是弄个文件列表,并进行引用--port
端口 用于ssh是非标端口(网络上一堆老教程)-i
仅输出变更摘要
1 | -H 保持硬链接 |
如无必要不要使用
-c
、--checksum
参数改变rsync的校验方式。默认情况下,rsync 只检查文件的大小和最后修改日期是否发生变化,如果发生变化,就重新传输;使用这个参数以后,则通过判断文件内容的校验和,决定是否重新传输。(比较操蛋的是这玩意校验是整个文件hash,所以全读一遍还是很慢的。)
注意事项
--delete-excluded
完全等同于 --delete --delete-excluded
群晖的rsync权限要自己开,否则没法使用(报错应该是 “ERROR: module is read only” ),另外支持的参数不完全一致,有些参数差异会导致无法使用
-z 参数先取消
增加 –port 以及群晖的说明
增加硬链接信息
更新也锁参数说明,增加软连接参数的说明
tab按习惯了,所以’/‘那里加粗