[Terminal]rsync

  • 1443 字
  • 次阅读

不正常的使用rsync可能会造成灾难性的后果,因此建议先带-n跑一次试试
请务必注意Linux命令的路径问题,带不带’/‘是不一样的,不带’/‘代表的文件夹本身,带’/‘则会表示这是一个路径,通常来说,目标路径建议最后跟上’/‘,不是很理解的话,建议带-n先跑一次。
请务必注意如果rsync发现元数据不一致会需要整个档案重传。所以请注意是通过是ssh拷还是nfs挂载拷,混弄的话,会做无用功
rsync -avP source destination --log-file=$HOME/.rsync.log
其中 source destination 都可以使用ssh
root@ip:/目录

常用参数

1
2
3
4
5
6
7
8
9
10
11
12
13
 其中z为压缩,在网络性能足够的情况下,不开会快(公网才建议开,另外在内容本身为有损压缩或者压缩包的情况下可以不开,文本 或者 code 多的话,开会比较好)
-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是非标端口(网络上一堆老教程)
-H 保持硬链接

如无必要不要使用

1
-c、--checksum参数改变rsync的校验方式。默认情况下,rsync 只检查文件的大小和最后修改日期是否发生变化,如果发生变化,就重新传输;使用这个参数以后,则通过判断文件内容的校验和,决定是否重新传输。(比较操蛋的是这玩意校验是整个文件hash,所以全读一遍还是很慢的。)

delete

--delete-excluded 完全等同于 --delete --delete-excluded

群晖

群晖的rsync权限要自己开,否则没法使用(报错应该是 “ERROR: module is read only” ),另外支持的参数不完全一致,有些参数差异会导致无法使用


-z 参数先取消
增加 –port 以及群晖的说明
增加硬链接信息

打赏
打赏提示信息
分享
分享提示信息