Rsync
如何在 Rsync 中按名稱和深度排除文件
我正在嘗試使用 rsync 自動執行一些備份並遇到以下問題。我有一個文件,其中包含一些要從複製中排除的內容。假設文件只有一行
exc
我想要 rsync 做的是在我提供 rsync 的目錄中排除任何名為“exc”的文件或目錄。但是,如果我們有以下樹:
./ | +---exc | file1 | +---directory + file2 | | +---exc file3
我希望圖表清楚。我想要發生的是第一個 exc 被排除但第二個被複製,而傳遞帶有 exc 行的文件將排除兩者。可能還有其他更深層次的名為 exc 的文件,因此排除文件中的行應僅指向根文件 exc。
排除模式應該是什麼樣的?
您可以在前面
--exclude
加上 a/
以將其錨定到傳輸的根目錄。因此,--exclude /exc
會做你想做的事。使用您的測試案例:
mkdir -p exc directory/exc touch exc/file1 directory/file2 directory/exc/file3 rsync -av --exclude /exc . /tmp/
/tmp 然後將包含目前文件夾,包括目錄/exc/*,但
exc/
原始文件夾除外。