Rsync
rsync 過濾器不起作用,排除所有文件
我正在嘗試將具有模式
*/ls
的文件從文件夾 /bin 同步到文件夾 test:mkdir test rsync -avv --exclude='*' --include=*/ls /bin/ test/ ls test
從輸出中包含過濾器無法工作:
[sender] hiding file ls because of pattern *
有誰知道怎麼了?
從左到右評估排除和包含過濾器。在您的命令行中,這意味著所有內容都被排除在外。包含過濾器沒有任何效果,因為排除模式已經匹配了所有可能的名稱。
相反,要複製
ls
從/bin
或其任何子目錄呼叫的每個文件,請使用rsync -av -m --include='*/' --include='ls' --exclude='*' /bin/ test/
將包含模式放在首位,最後排除所有未明確包含的內容。您將需要
*/
與包含模式匹配,因為您可能希望進入子目錄(至少在一般情況下)。我還添加了-m
,如果其中沒有文件,它會避免在目標上創建目錄。如果您不需要遞歸併希望使用
/bin/ls
複製,請rsync
使用rsync -av /bin/ls test/
此處顯示的兩個命令中目標路徑名末尾的斜杠是不必要的,但如果
test
不是目錄,則會強制命令失敗。在某種程度上,它起到了斷言的作用。