慎用 rsync

rsync -azH --progress --delete --delay-updates SRC DEST

这个命令会将DEST路径下不属于SRC的文件全部删除,罪魁祸首是--delete这个参数。
-a参数指定除了递归同步以外,也要同步元信息(比如修改时间、权限等)。
-z参数指定同步时压缩数据。
-H参数指定保留硬链接。
--progress参数指定在传输过程中展示进度。
--delete参数指定删除只存在于目标目录、不存在于源目标的文件,即保证目标目录是源目标的镜像。
--delay-updates参数指定将receiver端每个重组的临时文件保留在某个目录中,直到传输结束之前才一次性将它们全部重命名为各自对应的目标文件。这样的行为使得所有文件的更新更具有原子性(译者注:如果你了解数据库事务,就知道原子性是什么意思,最直白地说,具有原子性表示要么全部成功,要么全部失败,所以这里更新具有原子性表示要么全部更新成功,要么全部更新失败,但由于重命名覆盖目标文件后是不可回滚的,所以这里的原子性并不是那么的严格)。默认情况下,这些临时文件将放在每个目标文件所在目录下的.~tmp~子目录下,但如果指定了选项--partial-dir,那么将使用该选项指定的目录。该选项使得receiver端使用更多的内存空间,并且需要更多的磁盘空间以存储额外的目标文件副本。


参考:

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!