在Linux中,rsync
命令是一個非常強大且靈活的工具,用於檔案和目錄的同步。當使用rsync
進行同步時,如果希望刪除目標目錄中那些不再存在於源目錄中的檔案或目錄,你可以使用--delete
選項。
下面是一些關於如何使用--delete
選項的詳細說明:
1. 使用--delete
選項
當你在rsync
命令中加入--delete
選項時,它會在同步完成後檢查目標目錄,並刪除那些在源目錄中沒有對應檔案或目錄的條目。這有助於保持目標目錄與源目錄的一致性。
2. 基本語法
rsync [options] source-directory/ target-directory/
3. 新增--delete
選項
rsync -av --delete source-directory/ target-directory/
這裡:
-a
表示歸檔模式,它保留符號連結、檔案許可權、屬主、屬組等屬性。-v
是詳細模式,它會顯示詳細的同步過程。--delete
指定刪除目標目錄中多餘的檔案。
4. 注意事項
-
安全性:使用
--delete
時要小心,因為它可能會永久刪除檔案,如果沒有備份,這些檔案將無法恢復。最好先測試同步,確認無誤後再執行刪除操作。 -
幹執行模式:在實際執行之前,可以使用
--dry-run
選項來預覽rsync
將會做什麼,而不實際執行任何更改。rsync -avn --delete source-directory/ target-directory/
-
排除某些檔案:如果你不想刪除特定的檔案或目錄,可以使用
--exclude
選項來指定。rsync -av --delete --exclude='*.log' source-directory/ target-directory/
-
遞迴刪除:預設情況下,
rsync
會遞迴地處理目錄。確保你想要遞迴刪除所有子目錄中的額外檔案。 -
效能考慮:在處理大量檔案時,
--delete
可能會消耗較多資源和時間。可以考慮使用--delete-after
選項,在同步完成後再刪除,這樣可以避免在同步過程中刪除檔案的開銷。 -
遠端同步:如果目標或源是遠端主機上的目錄,你需要使用正確的遠端shell程式(如
ssh
),並且指定主機和路徑。rsync -avz --delete user@remote-host:/path/to/source/ /local/path/to/target/
綜上所述,請根據你的具體需求調整上述命令和選項。在生產環境中使用--delete
前,務必確保你理解其行為並採取適當的預防措施。