rsync命令中的路径反斜杠

       rsync 是一个常常被用来同步数据的命令,可是在使用过程当中一个小细节比较容易被忽略,那就是路径结尾的 “/” ,在路径的结尾有没有反斜杠,命令结果是大不相同的。如今做个简单试验来讲明:ide

      新建两个目录,一个名为sourceDir,另外一个名为destinationDir,并分别在目录中创建两个不一样的文件:spa

[root@localhost ~]# mkdir sourceDir
[root@localhost ~]# mkdir destinationDir
[root@localhost sourceDir]# touch a1 a2
[root@localhost destinationDir]# touch b1 b2
ci

[root@localhost ~]# ls -l sourceDir/
total 0
-rw-r--r--  1 root root 0 Sep 18 12:39 a1
-rw-r--r--  1 root root 0 Sep 18 12:39 a2
同步

[root@localhost ~]# ls -l destinationDir/
total 0
-rw-r--r--  1 root root 0 Sep 18 12:40 b1
-rw-r--r--  1 root root 0 Sep 18 12:40 b2
it

下面分别演示目录尾部是否带反斜杠的做用:io

 [root@localhost ~]# rsync -a sourceDir destinationDir/

源目录未带尾部路径反斜杠,rsync 会把 sourceDir 整个目录复制到 destinationDir 中,结果以下:table

[root@localhost ~]# ls -l sourceDir/
total 0
-rw-r--r--  1 root root 0 Sep 18 12:39 a1
-rw-r--r--  1 root root 0 Sep 18 12:39 a2
[root@localhost ~]# ls -l destinationDir/
total 4
-rw-r--r--  1 root root    0 Sep 18 12:40 b1
-rw-r--r--  1 root root    0 Sep 18 12:40 b2
drwxr-xr-x  2 root root 4096 Sep 18 12:39 sourceDir 

源目录带尾部路径反斜杠,rsync 会把 sourceDir 目录内的内容所有复制到 destinationDir 中,结果以下:class

[root@localhost ~]# rsync -a sourceDir/ destinationDir/
[root@localhost ~]# ls -l sourceDir/
total 0
-rw-r--r--  1 root root 0 Sep 18 12:39 a1
-rw-r--r--  1 root root 0 Sep 18 12:39 a2
[root@localhost ~]# ls -l destinationDir/
total 0
-rw-r--r--  1 root root 0 Sep 18 12:39 a1
-rw-r--r--  1 root root 0 Sep 18 12:39 a2
-rw-r--r--  1 root root 0 Sep 18 12:40 b1
-rw-r--r--  1 root root 0 Sep 18 12:40 b2 

看到了目录尾部是否带路径反斜杠的区别了吗?rsync

简单总结一下:源目录尾部的路径反斜杠是告诉 rsync 复制这个目录里的全部内容到目标目录 ,若是不加目录尾部路径反斜杠,那么这个目录自己会被复制到目标目录中。gc

咱们通常都是想要把源目录的内容同步到目标目录中,因此若是你实在记不清这个区别,那么在源目录的最后加上 “/*” 是最保险的方法。

相关文章
相关标签/搜索