Rsyncを使用して、UbuntuサーバーをMac上のディスクにバックアップします。しかし、初回以降にrsync操作を再実行するたびに、特殊文字を含むファイルが最初に削除されてから再同期されるため、適切に動作しません。異なる文字セットに問題があるかのようです。
推奨ソリューション は--iconv
オプションを使用するようです:
少なくともMacを使用している場合は、rsyncの--iconvオプションを使用してUTF-8 NFCとNFDの間で変換できます。 UTF-8 NFDを表す特別なutf-8-mac文字セットがあります。したがって、MacからNASにファイルをコピーするには、次のようなものを実行する必要があります。
rsync -a --iconv=utf-8-mac,utf-8 localdir/ mynas:remotedir/
これにより、すべてのローカルファイル名がリモートサーバーでUTF-8 NFDからUTF-8 NFCに変換されます。ファイルの内容は影響を受けません。
@Janのおかげで、私は Macのrsyncバージョンを更新 2.6.9から。 3.1.1へ。それでも、エラーがさらに表示されるので、まだそこにはいません。
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]
Ubuntu(12.04)のrsyncバージョンは3.x.x以降であり、--iconv
オプションをサポートする必要があるため、「要求されたアクションがサポートされない」理由を理解できません。
編集:私は(Macでは、nota beneで)MacからLinuxへのrsyncを開始すると、すべてがうまく機能することを追加します:
rsync -av --delete --iconv=utf-8-mac,utf-8 localdir/ mynas:remotedir/
しかし、Macから逆方向に移動しても機能しません。奇妙なことに、Linuxマシンからrsyncを開始するためのテストでは、次の奇妙なメッセージが表示されます。
rsync: on remote machine: --iconv=UTF-8-MAC: unknown option
rsync error: syntax or usage error (code 1) at /SourceCache/rsync/rsync-45/rsync/main.c(1333) [server=2.6.9]
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(605) [sender=3.0.9]
macで3.1.1に更新しましたが、非常に奇妙な主張[server=2.6.9]
を含みます。何らかの理由で、私のLinuxマシンはMac上の元のrsyncバージョンのみを「見る」ように見えます。
これを解決する方法についての提案はありますか?
解決策は非常に単純でした。問題を調査するときに読んだコメントのせいで、変換の順序で文字セットを指定することになっていると思いました。しかし、それは正しい構文ではないようです。むしろ、always macからrsyncを初期化するときに--iconv=utf-8-mac,utf-8
を使用し、always Linuxマシンからrsyncを初期化するときに--iconv=utf-8,utf-8-mac
を使用する必要があります。 MacまたはLinuxマシンからファイルを同期するかどうかは関係ありません。
それは魔法のように動作します!
編集:確かに、時々、マニュアルページを注意深くチェックすることは良いことです。ここに、白地に黒があります:
--iconv=CONVERT_SPEC
Rsync can convert filenames between character sets using this
option. Using a CONVERT_SPEC of "." tells rsync to look up the
default character-set via the locale setting. Alternately, you
can fully specify what conversion to do by giving a local and a
remote charset separated by a comma in the order
--iconv=LOCAL,REMOTE, e.g. --iconv=utf8,iso88591. This order
ensures that the option will stay the same whether you're Push-
ing or pulling files.
私はこの作品を確認することができます、私は同じ問題を抱えていました。私の場合、アクセント記号付きの文字を含むファイルは、宛先では読み込めませんでした。 Compare Foldersアプリケーションを使用してMacでフォルダー比較を実行することでそれを見つけました: https://iTunes.Apple.com/gb/app/compare-folders/id816042486?mt=12
上記の--iconv = utf-8-mac、utf-8およびBOOMを追加しました! rsyncはすべてのアクセント付きファイルを新しいファイルに置き換えました。
上記のリンクが機能しないと思われる情報を追加するには、rsyncを3.1.2にアップグレードするには、Macportsをインストールして実行します:Sudo port install rsync
リモートサーバーがバージョン2.6.9を返すのを見たのは、古いバージョンが実際にはまだ存在し、リモートサーバーが新しいサーバーではなくそのサーバーを認識しているためです。
バージョン2.6.9は/ usr/binにあります