2026 選型指南rsyncopenrsync遠端 Mac 建置同步

2026 年 Mac 上 rsync 與 openrsync 選型指南:遠端建置同步相容性、常見失敗場景與替代方案

macOS Sequoia 將系統自帶 rsync 換成了 openrsync,這對依賴 rsync 做遠端建置同步、CI 產物分發的團隊影響不小。本文說明二者差異、何時用 Homebrew rsync 或 Docker、如何排查 ENOSPC/ECONNREFUSED,並給出按團隊規模與系統版本的選型決策清單;文末會自然收束到為何在遠端 Mac 上選用 SFTP 託管往往更穩、更易管控。

rsyncopenrsyncmacOS Sequoia遠端 Mac建置同步SFTP
Mac 上 rsync 與 openrsync 在遠端建置同步場景下的選型與故障排查示意圖

為什麼 2026 年 macOS Sequoia 要用 openrsync,對遠端建置同步有什麼影響

Apple 在 macOS Sequoia 中用 openrsync 替代了沿用多年的 rsync,主要原因與 GPLv3 許可策略有關。系統自帶的 rsync 2.6.9 年代久遠,而新版 rsync 3.x 採用 GPLv3,蘋果選擇引入 BSD 許可的 openrsync 以規避合規與分發限制。對開發者而言,openrsync 體積更小、效能有優化,但在遠端守護模式(rsync daemon)、ACL 及部分權限同步行為上與 rsync 3.x 存在差異,若你的流水線依賴這些特性,就需要提前評估:要麼繼續使用 Homebrew 安裝的 rsync 3.x,要麼接受 openrsync 的功能邊界並調整腳本。

遠端建置同步場景下,影響主要集中在三方面:一是增量校驗與 delta 傳輸的相容性,二是目標端權限與時間戳的保留程度,三是與現有 CI(如 GitHub Actions、Jenkins)中 rsync 指令的相容性。多數「只做本機到遠端目錄同步」的用法,openrsync 可以勝任;一旦涉及 daemon 模式、複雜 ACL 或跨多節點同步,建議仍使用完整版 rsync。

rsync 與 openrsync 功能對比表:權限、ACL、遠端守護模式差異

下表從遠端建置同步常用能力出發,對比系統 openrsync 與 Homebrew rsync 3.x,便於你按需選型。

能力系統 openrsync (Sequoia)Homebrew rsync 3.x對建置同步的影響
增量 / delta 傳輸支援支援兩者均能滿足增量同步,差異不大
遠端 daemon 模式有限或行為差異完整支援若 CI 透過 rsync:// 拉取產物,建議用 Homebrew rsync
ACL / 擴充屬性部分支援完整支援需嚴格保留權限時選 rsync 3.x
--fake-super計劃中 (openrsync 路線圖)支援非 root 保留 full permissions 時依賴此項
維護與升級隨系統更新brew upgrade rsync長期可控性 Homebrew 更靈活

結論:若僅做「本機或 CI 到遠端 Mac 目錄」的增量推送、且不依賴 daemon 與複雜 ACL,可先嘗試系統 openrsync;否則建議在建置節點上統一安裝 brew install rsync,並顯式使用 /opt/homebrew/opt/rsync/bin/rsync 或 PATH 優先,避免與系統自帶的 openrsync 混用。

遠端 Mac 上建置產物同步的推薦方案(Homebrew rsync / Docker rsync / SFTP)

三種常見做法的適用場景與注意點如下。

  1. Homebrew rsync: 在遠端 Mac 上執行 brew install rsync,CI 或本機透過 SSH 呼叫該 rsync。適合已標準化 SSH 存取、且希望保留完整 rsync 能力的團隊。注意確保 PATH 中優先使用 Homebrew 版本,避免與系統 openrsync 混用。
  2. Docker rsync: 在遠端 Mac 上以容器執行 rsync 3.x 服務,保證版本一致、不受系統變更影響。適合多節點、多系統混雜的環境,但需要維護映像與網路對應,複雜度較高。
  3. SFTP 閘道 + 目錄隔離: 不依賴 rsync daemon,透過 SFTP 上傳/下載建置產物,配合嚴格目錄權限與稽核。適合更看重權限邊界、多角色交付與合規稽核的團隊;若仍需增量同步,可在 SFTP 准入之下再在「允許的目錄」內使用 rsync over SSH。

實際落地時,很多團隊採用「SFTP 做准入與權限,rsync 做大批量增量同步」的混合方式:SFTP 保證只有授權帳號能存取指定目錄,rsync 在該目錄內負責高效增量傳輸,兼顧安全與效率。

ENOSPC、ECONNREFUSED 等常見同步失敗場景排查與解決

下面給出 5 步排查流程與對應處理思路。

# 1. 確認本機使用的 rsync 路徑(避免與 openrsync 混用)
which rsync
/opt/homebrew/bin/rsync --version

# 2. 測試 SSH 與目標磁碟空間(避免 ENOSPC)
ssh user@remote-mac "df -h /path/to/dest"
ssh user@remote-mac "df -i /path/to/dest"   # inode 是否耗盡

# 3. 檢查目標端是否在監聽(避免 ECONNREFUSED)
# 若用 rsync daemon:netstat -an | grep 873
# 若用 rsync over SSH:確保 sshd 正常、防火牆放行 22

# 4. 乾跑一次,看實際傳輸列表
rsync -avzn --delete ./build/ user@remote-mac:/path/to/dest/

# 5. 正式執行並保留日誌
rsync -avz --delete ./build/ user@remote-mac:/path/to/dest/ 2>&1 | tee rsync.log

ENOSPC: 表示目標磁碟或 inode 已滿。清理目標目錄、歸檔舊產物或擴容;必要時在 CI 中增加「同步前檢查磁碟空間」的步驟。
ECONNREFUSED: 表示對端未監聽或防火牆阻斷。若走 SSH,檢查 sshd 與 22 埠;若走 rsync daemon,檢查 873 埠與 rsyncd.conf
Permission denied / 權限相關: 確認目標目錄屬主與 SSH 使用者一致,以及是否依賴 ACL/--fake-super,若需完整權限保留,優先使用 Homebrew rsync 並查閱其文件。

決策清單:按團隊規模與系統版本選 rsync/openrsync 還是 SFTP 託管

  • 僅本機或單節點、Sequoia 自帶 openrsync 即可滿足: 直接使用系統 rsync,腳本中避免依賴 daemon 與複雜 ACL。
  • 多節點 CI、需 daemon 或嚴格權限: 統一在各節點安裝 Homebrew rsync,並固定使用其路徑。
  • 更看重權限邊界、稽核與多角色交付: 引入 SFTP 閘道 + 目錄隔離,必要時在允許的目錄內再使用 rsync over SSH。
  • 希望減少對單機系統與 rsync 版本的依賴: 考慮將「建置產物託管」整體遷到提供 SFTP 的遠端 Mac 託管服務,由服務方保證可用性與權限策略,本機或 CI 只做上傳/下載與校驗。

rsync 與 openrsync 在多數「目錄級增量同步」場景下都能工作,真正決定體驗的是:版本統一、路徑一致、以及故障時的快速排查。當團隊規模擴大、合規與稽核要求提高時,僅靠 rsync 往往不夠,需要清晰的准入層(如 SFTP)和穩定的遠端執行環境。

macOS Sequoia 下為什麼系統自帶的 rsync 換成了 openrsync?

因 GPLv3 許可與蘋果策略衝突,Apple 在 macOS Sequoia 中將傳統 rsync 替換為 BSD 許可的 openrsync。openrsync 體積更小、效能有提升,但在遠端守護模式、ACL 及部分權限同步上與 rsync 3.x 存在差異,遠端建置同步場景需注意相容性。

遠端 Mac 上建置產物同步用 rsync 還是 SFTP 更好?

若團隊已統一使用 rsync 且需增量與校驗,可繼續用 Homebrew 安裝的 rsync 3.x;若更看重權限邊界、稽核與多角色交付,SFTP 閘道配合目錄隔離往往更易管控。兩者可並存:SFTP 做准入與權限,rsync 做大批量增量同步。

同步報 ENOSPC 或 ECONNREFUSED 怎麼排查?

ENOSPC 表示目標磁碟或 inode 已滿,需清理目標或擴容;ECONNREFUSED 表示對端服務未監聽或防火牆阻斷,需檢查 sshd、rsync daemon 或 SFTP 埠是否開放,以及本機與遠端 Mac 的網路與防火牆規則。

在自管 Mac 或 CI 節點上維護 rsync/openrsync 版本與排查網路與磁碟問題,會佔用不少精力。若你更希望把時間用在業務交付上,可考慮將建置產物同步與權限管控交給專業遠端 Mac 託管:SFTPMAC 提供穩定 SFTP 與目錄隔離,相容 rsync over SSH 的增量同步方式,由我們保障節點可用性與權限策略,你只需專注建置與發布。