为什么要在 rsync 目标后添加斜杠?

Emm*_*maV 16 rsync

根据网页,将“/”添加到 rsync 目标的末尾与不添加会产生不同的结果。

我试图对此进行测试,但无法验证:

$ mkdir dir{1..3}
$ touch dir1/file
$ rsync -r dir1/ dir2
$ rsync -r dir1/ dir3/
$ ls dir*
dir1:
file

dir2:
file

dir3:
file
Run Code Online (Sandbox Code Playgroud)

有时将“/”附加到目的地实际上是否有用?

res*_*esc 33

当源是一个文件而目标目录不存在时,它确实有所不同。例如取一个名为file源的文件:

  • $ rsync file dest/file在目录内创建一个副本dest,而
  • $ rsync file dest将制作file名为的文件的副本dest

添加(来自评论);如果目录dest已经存在,filedest在上述两种情况下都会创建一个副本。

基本示例:

~/test > touch file
~/test > mkdir dest1
mkdir: created directory 'dest1'
~/test > tree
.
??? dest1
??? file

1 directory, 1 file
~/test > rsync file dest1
~/test > rsync file dest2
~/test > rsync file dest3/
~/test > tree
.
??? dest1
?   ??? file
??? dest2
??? dest3
?   ??? file
??? file

2 directories, 4 files
~/test >
Run Code Online (Sandbox Code Playgroud)

  • 谢谢。因此,如果目录“dest”已经存在,则不需要尾部斜杠? (2认同)