MacとLinuxの間で機能しない特殊文字ファイルを含むRsync


18

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.xx以降であり、この--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]

[server=2.6.9]Macで3.1.1に更新しましたが、非常に奇妙な主張を含みます。何らかの理由で、私のLinuxマシンはMac上の元のrsyncバージョンのみを「見る」ように見えます。

これを解決する方法についての提案はありますか?

回答:


18

解決策は非常に単純でした。問題を調査するときに読んだコメントのせいで、変換の順序で文字セットを指定することになっていると思いました。しかし、それは正しい構文ではないようです。むしろ、macからrsyncを初期化するときは常に使用し、macまたはlinuxマシンからファイルを同期するかどうかに関係なく、linuxマシンからrsyncを初期化するときは常に使用する必要があります。--iconv=utf-8-mac,utf-8--iconv=utf-8,utf-8-mac

それは魔法のように動作します!

編集:確かに、時々、マニュアルページを注意深くチェックすることは良いことです。ここに、白地に黒があります:

--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.

うーん... UbuntuからAmazon S3まで私に起こっている...:|
トムロジェロ

気にしないで!AWS CLIによって修正されました。
トムロジェロ

黒地に白;)
Hello World

3

私はこの作品を確認することができます、私は同じ問題を抱えていました。私の場合、アクセント記号付きの文字を含むファイルは、宛先では読み込めませんでした。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にあります

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.