首頁 > 檔案與目錄管理 > rsync-exclude

rsync-exclude:同步檔案時排除特定檔案/目錄

`rsync` 命令是一個強大的工具,用於在本地和遠端系統之間高效地同步檔案。特別是,通過 `--exclude` 和 `--exclude-from` 選項,您可以從同步目標中排除符合特定檔案、目錄或模式的項目。本指南將重點介紹 `rsync` 的排除功能,這在防止不必要的檔案傳輸以及僅備份或複製特定數據時非常有用。

概述

`rsync` 的排除功能在複雜的檔案同步場景中至關重要。通過從同步目標中排除特定的日誌檔案、臨時檔案、版本控制系統元數據(.git, .svn)等,可以縮短傳輸時間、節省目標空間並避免複製不必要的數據。

主要特點

`rsync` 排除功能提供的核心特點。

  • **基於模式排除**:可以使用萬用字元(glob)模式,根據檔案名或路徑進行排除。
  • **基於檔案列表排除**:可以將要排除的模式寫在單獨的檔案中進行管理。
  • **靈活的規則應用**:可以與 `--include` 選項結合,定義複雜的包含/排除規則。
  • **性能優化**:通過減少不必要的檔案傳輸來提高同步速度。

主要選項

在 `rsync` 命令中用於排除檔案和目錄的核心選項。

指定排除規則

其他有用選項

生成的命令:

請試著組合命令。

這個 Django 應用程序是一個技術指南文檔,旨在為用戶輕鬆解釋 Linux 的各種命令。

`rsync-exclude` 執行命令。

請將上述選項組合在一起,與 AI 一同虛擬執行命令。

使用範例

使用 `rsync` 的排除選項的實際範例。

排除特定檔案擴展名

rsync -av --exclude='*.log' --exclude='*.tmp' /path/to/source/ /path/to/destination/

從來源目錄排除 `.log` 和 `.tmp` 檔案,並將其同步到目標目錄。

排除特定目錄

rsync -av --exclude='node_modules/' --exclude='.git/' /path/to/source/ /path/to/destination/

從來源目錄排除 `node_modules` 和 `.git` 目錄,並進行同步。

使用排除列表檔案

rsync -av --exclude-from=exclude_list.txt /path/to/source/ /path/to/destination/

使用 `exclude_list.txt` 檔案中定義的模式來排除同步目標。 **exclude_list.txt 內容範例:** ``` *.bak /temp_files/ logs/ ```

僅包含特定檔案並排除其餘檔案

rsync -av --include='*.conf' --exclude='*' /path/to/source/ /path/to/destination/

預設排除所有檔案,僅包含擴展名為 `.conf` 的檔案進行同步。`--include` 和 `--exclude` 的順序很重要。

同步到遠端伺服器時排除特定檔案

rsync -avz --exclude='.DS_Store' --exclude='cache/' /path/to/local/user@remote_host:/path/to/remote/

將本地目錄的內容同步到遠端伺服器,同時排除 `.DS_Store` 檔案和 `cache/` 目錄。

提示與注意事項

有效使用 `rsync` 的排除選項並避免潛在問題的提示和注意事項。

理解模式匹配規則

排除模式根據 `rsync` 的篩選規則工作。

  • **萬用字元**:`*` 匹配任何字串,`?` 匹配單一字元。`**` 匹配跨越目錄邊界。
  • **路徑**:如果模式以 `/` 開頭,則相對於來源目錄的根。如果以 `/` 結尾,則僅匹配目錄。
  • **相對路徑**:如果模式不包含 `/`,則在所有目錄層級都匹配。例如:`--exclude='temp'` 會排除 `/path/to/source/temp` 和 `/path/to/source/subdir/temp`。

選項順序的重要性

`--include` 和 `--exclude` 選項按照它們在命令列中出現的順序進行處理。因此,如果您想包含特定檔案並排除其餘檔案,則應先使用 `--include`,然後再使用 `--exclude='*'`。

  • `--include='*.txt' --exclude='*'` (包含所有 `.txt` 檔案,排除其餘檔案)
  • `--exclude='*' --include='*.txt'` (排除所有檔案,`.txt` 檔案也會被排除 - 意外結果)

利用測試執行(`--dry-run`)

在實際同步重要數據之前,請務必使用 `-n` 或 `--dry-run` 選項檢查預期的行為。這對於防止意外排除或包含檔案非常有效。

  • `rsync -avn --exclude='*.log' /path/to/source/ /path/to/destination/`

使用 `-vv` 選項進行調試

當排除規則不如預期時,添加 `-vv` (verbose) 選項可以讓 `rsync` 輸出詳細資訊,說明哪些檔案被跳過以及是根據哪個規則排除的,這有助於調試。

  • `rsync -avv --exclude='*.bak' /path/to/source/ /path/to/destination/`

相同類別命令