2021年7月9日星期五

rsync folder1 to folder2


rsync -av --no-times --exclude='*.bak' --exclude='*.log' --delete /source/directory/ /destination/directory/

参数解析:

  • -a归档模式,它相当于 -rlptgoD,会递归地同步目录及文件,保持符号链接、权限、用户、组和时间戳等。虽然 -a 默认会同步时间戳,但我们后面会通过 --no-times 参数禁用时间戳同步。
  • -v详细模式,显示传输的文件和操作细节。可以看到哪些文件被同步。
  • --no-times:禁用同步时间戳(-a 包含 -t 会同步时间戳,但 --no-times 覆盖此行为)。
  • --exclude='*.bak':排除 .bak 文件。你可以通过该选项指定不需要同步的文件类型。
  • --exclude='*.log':排除 .log 文件。
  • /source/directory/:源目录路径,尾部有 / 表示同步目录内容,而不是整个目录。
  • /destination/directory/:目标目录路径。
  • --delete:在目标目录中删除源目录不存在的文件。

工作原理:

  • 在同步过程中,rsync 会检查目标目录中的文件,如果它们不在源目录中存在,则会删除这些文件。该功能确保目标目录与源目录保持同步,没有多余的文件。

示例场景:

  • 源目录 /source/directory/ 包含文件 file1.txtfile2.txt
  • 目标目录 /destination/directory/ 包含文件 file1.txtfile2.txt 和一个额外的 file3.txt
  • 执行上述命令后,file3.txt 将从目标目录中删除,因为它不在源目录中。

没有评论: