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
咱們通常都是想要把源目錄的內容同步到目標目錄中,因此若是你實在記不清這個區別,那麼在源目錄的最後加上 「/*」 是最保險的方法。