Rsync
為什麼 rsync 不包含嵌套目錄?
給定以下目錄結構:
$ cd /home/user/test/ $ mkdir -p source/b/c/ $ touch source/b/c/d.txt $ tree source/ source/ └── [4.0K] b └── [4.0K] c └── [ 0] d.txt
為什麼此命令按預期復製文件夾:
$ pwd /home/user/test/ $ rsync -av -n --include="b/***" --exclude="*" source/ target sending incremental file list created directory target ./ b/ b/c/ b/c/d.txt sent 141 bytes received 59 bytes 400.00 bytes/sec total size is 0 speedup is 0.00 (DRY RUN)
但這不是嗎?
$ pwd /home/user/test/ $ rsync -av -n --include="b/c/***" --exclude="*" source/ target sending incremental file list ./ sent 59 bytes received 19 bytes 156.00 bytes/sec total size is 0 speedup is 0.00 (DRY RUN)
我是如何偶然發現它的:我正在嘗試同步多個可變嵌套目錄,同時保留整體目錄結構。
為什麼更具體的包含規則無法匹配任何內容?
第一個例子
rsync -av -n --include="b/***" --exclude="*" source/ target
- 包括目錄
b
及其下面的所有內容- 排除一切(其他)
所以
b
和它的孩子得到備份第二個例子
rsync -av -n --include="b/c/***" --exclude="*" source/ target
- 包括目錄
b/c
和下面的所有內容c
- 排除一切(其他)
這裡的問題是你沒有包括
b
所以rsync
永遠找不到b/c
。解決方案是b
明確包括,rsync -av -n --include='b/' --include="b/c/***" --exclude="*" source/ target
- 包含目錄
b
- 包括目錄
b/c
和下面的所有內容c
- 排除一切(其他)