Ubuntu 和 Mac 之間的 Rsync:如何讓 iconv 選項發揮作用

Ubuntu 和 Mac 之間的 Rsync:如何讓 iconv 選項發揮作用

我通常在兩台 Ubuntu 機器之間進行備份,但我現在想使用 rsync 透過駐留在 Mac 上的磁碟來備份我的 Ubuntu 伺服器。但我無法讓它正常工作。

第一次一切都很好,但顯然mac和ubuntu機器之間存在特殊字元的問題,因為此後每次執行rsync操作時,都會先刪除帶有特殊字元的文件,然後重新同步。看來不同的字符集有問題。

首選解決方案似乎是使用該--iconv選項:

您可以使用 rsync 的 --iconv 選項在 UTF-8 NFC 和 NFD 之間進行轉換,至少如果您使用的是 Mac。有一個特殊的 utf-8-mac 字元集,代表 UTF-8 NFD。因此,要將檔案從 Mac 複製到 NAS,您需要執行以下命令:

rsync -a --iconv=utf-8-mac,utf-8 localdir/ mynas:remotedir/

這會將遠端伺服器上的所有本機檔案名稱從 UTF-8 NFD 轉換為 UTF-8 NFC。文件的內容不會受到影響。

這聽起來不錯,但我的 Mac 似乎無法識別該選項,因為我得到:

>     MyMachine:~ Macuser$ /usr/bin/rsync -av --delete --iconv=utf-8,utf-8-mac user@linuxmachine:/home/linuxuser/Test/ /Users/Macuser/Test/
>     rsync: --iconv=utf-8,utf-8-mac: unknown option
>     rsync error: syntax or usage error (code 1) at /SourceCache/rsync/rsync-42/rsync/main.c(1333) [client=2.6.9]

關於如何解決這個問題有什麼建議嗎?

請注意,正如上面的“程式碼範例”中可能隱藏的那樣,我的 Mac 上的 rsync 版本是 2.6.9。

編輯:雖然 Jan 解決了這個問題(請參閱我勾選的答案),但我仍然不完全在那裡,因為我現在收到一個新錯誤:

iconv_open("UTF-8", "utf-8-mac") failed
rsync error: requested action not supported (code 4) at rsync.c(118) [sender=3.0.9]
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [Receiver=3.1.1]

我會讓一個單獨的查詢然而,對於這個進一步的問題。

答案1

OS X 10.5 有 rsync 2.6.9 但 iconv 選項僅在 rsync 3.x 中可用......

若要在 Mac 上更新 rsync,您可以使用 macports (安裝說明)。

提供 Macport(和 Homebrew)教程這裡

相關內容