不正常的使用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)、权限、所有者等,并且软链接也会同步过去。(个人使用理解,请务必确认是否需要使用这个参数,一般不用这个参数就要用-c,如果都不使用,建议不要用rsync,寻找其他的替代方案。rsync的使用基本基于这两个参数)-c 强制 rsync 使用文件内容的 checksum(校验和)来判断文件是否需要同步,而不是使用默认的判断方式。--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 | 本地文件有变更(例如属性变化,但未传输文件内容)。 | 
| h | 硬链接被创建或保持。 | 
| . | 文件未发生变动(仅在使用 --dry-run 或冗余输出时显示)。 | 
| * | 文件的其他信息(如路径名变化)。 | 
| f | 目录中的一个文件被创建(但未传输内容,可能用于占位目录结构)。 | 
| d | 文件被删除。 | 
| D | 设备文件(如 /dev 中的文件)被特殊处理。 | 
| L | 符号链接被同步。 | 
属性变更(后续字符)
从第二个字符开始,每个位置表示一种属性的变化(+ 表示有变更,. 表示无变更):
顺序固定为: YXcstpoguax(共 11 个字符)
| 位置 | 属性 | 说明 | 
|---|---|---|
| 1 | Y | 预留位,通常为 . | 
| 2 | X | 预留位,通常为 . | 
| 3 | c (checksum) | 文件内容变化(通过校验和检测)。 | 
| 4 | s (size) | 文件大小变化。 | 
| 5 | t (mtime) | 修改时间(mtime)变化。 | 
| 6 | p (permissions) | 权限(如 rwx)变化。 | 
| 7 | o (owner) | 所有者(owner)变化。 | 
| 8 | g (group) | 所属组(group)变化。 | 
| 9 | u (uid/gid) | 保留字段(未使用)。 | 
| 10 | a (acl) | ACL(访问控制列表)变化。 | 
| 11 | x (xattr) | 扩展属性(xattr)变化。 | 
如无必要不要使用
-c、--checksum参数改变rsync的校验方式。默认情况下,rsync 只检查文件的大小和最后修改日期是否发生变化,如果发生变化,就重新传输;使用这个参数以后,则通过判断文件内容的校验和,决定是否重新传输。(比较操蛋的是这玩意校验是整个文件hash,所以全读一遍还是很慢的。)
注意事项
--delete-excluded 完全等同于 --delete --delete-excluded
群晖的rsync权限要自己开,否则没法使用(报错应该是 "ERROR: module is read only" ),另外支持的参数不完全一致,有些参数差异会导致无法使用
 -z 参数先取消
增加 --port 以及群晖的说明
增加硬链接信息
更新也锁参数说明,增加软连接参数的说明
tab按习惯了,所以'/'那里加粗
输出log字符的一些说明