斜杠和rsync命令

我正在尝试按照与此问题相同的方式做一些事情: RSync:如何在两个方向上同步?

但是,我不能弄清楚是否应该斜线添加到文件path的末尾。 基本上我试图创build一个别名命令来同步两个目录的内容,这两个目录的名字相同,但在两台不同的服务器上。 我不想要的是将一个目录复制到另一个目录(我知道这是一个可能性,取决于最终的斜杠是如何完成的)。

我目前所拥有的是:

alias syncDirectories1 = 'rsync -tvur name@host:/Users/me/directory/ /Users/me/directory/' alias syncDirectories2 = 'rsync -tvur /Users/me/directory/ name@host:/Users/me/directory/' 

对于我想要完成的任务,是否应该在两个文件path的末尾都有斜杠?

预先感谢您的帮助。

它在rsync(1)联机帮助页面中有介绍。

源上的尾部斜杠会更改此行为,以避免在目标位置创建额外的目录级别。 你可以把源文件中的尾部/尾部看作是“复制这个目录的内容”,而不是“按名称复制目录”,但是在这两种情况下,包含目录的属性都被传送到目的地的包含目录。 换句话说,下面的每个命令都以相同的方式复制文件,包括设置/ dest / foo的属性:

 rsync -av /src/foo /dest rsync -av /src/foo/ /dest/foo 

至于目的地,我不认为会有什么重大的后果。 如果源是一个文件而目的地不存在 – 命令是有区别的

 rsync SRC DEST 

将做一个叫做DESTSRC的副本,而

 rsync SRC DEST/ 

将创建目录DEST并将SRC文件复制到其中。

在源代码上保留斜线,并将其从目标中移除。 喜欢这个:

 alias syncDirectories1 = 'rsync -tvur name@host:/Users/me/directory/ /Users/me/directory' alias syncDirectories2 = 'rsync -tvur /Users/me/directory/ name@host:/Users/me/directory' 

我从Ubuntu 17.04接受的答案有不同的结果,似乎目的地/没有影响。 我做了以下四个命令:

  • rsync -av src nslash ————在src或dest上没有斜杠
  • rsync -av src dslash / ————只在目标上执行Slash
  • rsync -av src / sslash ————只在src上打斜
  • rsync -av src / sdslash / ————在src和dest上都有斜杠

结论:

  • 一旦src上有一个/,那么只有src的内容才会被复制到dest,而不管dest是否有斜线。
  • 在src上没有斜杠,那么src和它的内容将被复制到dest。
  • 对dest的斜杠没有任何影响。