![Ubuntu 和 Mac 之間的 Rsync:如何讓 iconv 選項發揮作用](https://rvso.com/image/1083714/Ubuntu%20%E5%92%8C%20Mac%20%E4%B9%8B%E9%96%93%E7%9A%84%20Rsync%EF%BC%9A%E5%A6%82%E4%BD%95%E8%AE%93%20iconv%20%E9%81%B8%E9%A0%85%E7%99%BC%E6%8F%AE%E4%BD%9C%E7%94%A8.png)
我通常在兩台 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]
我會讓一個單獨的查詢然而,對於這個進一步的問題。