不同路径写法对Rsync的影响

Rsync 同步时需要指定源路径与目标路径,那么路径末尾的 / 会影响同步的结果吗?做了以下测试

同步目录

以源路径 /Downloads/User 目录,远端目录 /data 为例

  • rsync Dowloads/User root@ip:/data
    • /data 存在,/data/User 与源目录一致
    • /data不存在,/data/User与源目录一致
  • rsync Downloads/User root@ip:/data/
    • /data存在,/data/User与源目录一致
    • /data不存在,/data/User与源目录一致
  • rsync Downloads/User/ root@ip:/data
    • /data存在,/data 与源目录一致
    • /data不存在,/data与源目录一致
  • rsync Dowloads/User/ root@ip:/data/
    • /data存在,/data与源目录一致
    • /data 不存在, /data与源目录一致

同步文件

以源路径 /Downloads/User/a.txt文件,远端路径 /data 为例

  • rsync Dowloads/User/a.txt root@ip:/data
    • /data 存在,/data 覆盖内容与a.txt一致
    • /data不存在,/data 创建文件,内容与a.txt一致
  • rsync Downloads/User/a.txt root@ip:/data/
    • /data存在,/data/a.txt 与a.txt一致
    • /data不存在,/data/a.txt 与a.txt一致
  • rsync Downloads/a.txt/ root@ip:/data
    • /data存在,报错:”Downloads/User/a.txt/.” failed: Not a directory (20)
    • /data不存在,报错:”Downloads/User/a.txt/.” failed: Not a directory (20)
  • rsync Dowloads/User/a.txt/ root@ip:/data/
    • /data存在,报错:”Downloads/User/a.txt/.” failed: Not a directory (20)
    • /data 不存在,报错:”Downloads/User/a.txt/.” failed: Not a directory (20)

总结

  • 同步的源路径为目录时
    • 源路径以/结尾时,同步源路径下边的所有文件至目标路径内
    • 源路径非/结尾时,同步源路径自身至目标路径内(源目录会作为目标路径的子目录)
    • 与目标路径是否以/结尾无关
  • 同步的源路径为文件时
    • 源路径以/结尾时报错,无法执行同步
    • 目标路径以/结尾时,同步文件至目标路径下,新建或覆盖目标路径下的同名文件
    • 目标路径非/结尾时,目标路径即为同步之后的文件路径(可理解为把源文件重命名为目标文件)