手冊頁沒有這方面的範例。我很難告訴 rsync 僅包含這些文件所在的某些文件。我不明白為什麼你必須排除才能包含,為什麼rsync
不包含包含文件中的內容,而其他所有內容都將被排除。
這是我的腳本:
rsync -ruv --rsh=ssh --include-from=zz-rsync-test.prod.incl /usr2/subdir remoteSrv:/tmp/.
這是我的包含文件,它不起作用:它複製了太多:它複製了 /usr2/subdir 中的所有內容(包括目錄subdir
,很奇怪),這是我不想要的。我只想複製data/text_forms
目錄中的 per、42f 和 xml 檔案。
+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*
並且以下內容不起作用,它不會複製任何內容:
- *
+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*
並且以下內容也不起作用,它不會複製任何內容:
- *
+ data/
+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*
並且以下內容也不起作用,它不會複製任何內容:
- *
+ data/
+ data/text_forms/
+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*
以下也不起作用:
+ */
+ /data/text_forms/*.per
+ /data/text_forms/*.42f
+ /data/text_forms/*.xml
+ /data/text_forms/*.xml.*
- *
以下均不起作用:
+ /data/
+ /data/text_forms/
+ /data/text_forms/*.per
+ /data/text_forms/*.42f
+ /data/text_forms/*.xml
+ /data/text_forms/*.xml.*
- *
答案1
我找到了解決方案。我花了整整兩天才找到它。我希望這可以幫助您不要花太多時間。
subdir
第一個問題是包含了中的子目錄/usr2/subdir
,我不希望包含整個目錄,我只是希望它成為基底目錄,因此它需要在末尾有一個斜杠,如 中/usr2/subdir/
,所以我的新命令看起來喜歡:
rsync -ruvv --rsh=ssh --include-from=zz-rsync-test.prod.incl /usr2/subdir/ remoteSrv:/tmp/.
v
請注意,我在命令列 ( ) 中添加了一個額外選項-ruvv
,以獲取運行命令時排除或包含的內容的更多詳細資訊。固定基本目錄和額外目錄後,v
建立正確的包含檔案會更容易一些:
+ data/
+ data/text_forms/
+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*
- *
所有+
行都必須放在 之前- *
,特別是對於目錄,因為即使我不想直接在這些目錄中獲取文件,我也必須明確包含要掃描的每個目錄。我做了一個測試,添加了 adata/anyTestFile1
和 a,data/text_forms/anyTestFile2
因為我不確定那些是否會被拾取,但它們沒有,所以它正在做我想要的......最後。