rsync:删除目标中而非源中的某些文件,但不删除其他文件

rsync:删除目标中而非源中的某些文件,但不删除其他文件

给定两个目录/.../src/.../des,

  • 他们共享一些子目录share1并且share2
  • des还有一个名为 的子目录,des1该子目录不存在于src.

我如何执行从src到 的文件传输des(通过rsync或您喜欢的其他程序),以便

  • 根据中的同名目录更新share1和,包括share2dessrc

    • des/share1删除和中des/share2但不在src/share1和中的所有文件src/share2
    • des/share1添加不在和des/share2中但在src/share1和中的所有文件src/share2,并且
    • 更新 和 中的所有文件,或同时更新 和des/share1中的src/share1 所有文件,des/share2src/share2
  • 保持des/des1完好无损?谢谢。

答案1

有两种选择。两者都使用rsync.

任何一个:只更新share1share2删除目标中的未知文件

rsync --dry-run -avP --delete .../src/share1 .../src/share2 .../des/

或者:更新 中的所有内容des,删除目标中的未知文件,除了des1

rsync --dry-run -avP --delete --exclude '/des1' .../src/ .../des/

当您对结果感到满意时,删除--dry-run.

相关内容