rsync 是一个常常被用来同步数据的命令,可是在使用过程当中一个小细节比较容易被忽略,那就是路径结尾的 “/” ,在路径的结尾有没有反斜杠,命令结果是大不相同的。如今做个简单试验来讲明:ide
新建两个目录,一个名为sourceDir,另外一个名为destinationDir,并分别在目录中创建两个不一样的文件:spa
[root@localhost ~]# mkdir sourceDir [root@localhost ~]# ls -l sourceDir/ [root@localhost ~]# ls -l destinationDir/ |
下面分别演示目录尾部是否带反斜杠的做用: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
咱们通常都是想要把源目录的内容同步到目标目录中,因此若是你实在记不清这个区别,那么在源目录的最后加上 “/*” 是最保险的方法。