rsync命令中的路径反斜杠
时间:2010-09-18 来源:crown_prince
rsync 是一个经常被用来同步数据的命令,但是在使用过程中一个小细节比较容易被忽略,那就是路径结尾的 “/” ,在路径的结尾有没有反斜杠,命令结果是大不相同的。现在作个简单试验来说明:
新建两个目录,一个名为sourceDir,另一个名为destinationDir,并分别在目录中建立两个不同的文件:
[root@localhost ~]# mkdir sourceDir
[root@localhost ~]# ls -l sourceDir/
[root@localhost ~]# ls -l destinationDir/ |
下面分别演示目录尾部是否带反斜杠的作用:
[root@localhost ~]# rsync -a sourceDir destinationDir/ |
源目录未带尾部路径反斜杠,rsync 会把 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 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 中,结果如下:
[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 复制这个目录里的所有内容到目标目录 ,如果不加目录尾部路径反斜杠,那么这个目录本身会被复制到目标目录中。
我们一般都是想要把源目录的内容同步到目标目录中,所以如果你实在记不清这个区别,那么在源目录的最后加上 “/*” 是最保险的方法。