Macにプリインストールされているrsyncでエラーになる

Macにプリインストールされているrsyncを使って、リモートのホストへファイルを同期している時に起きた問題です.

TL;DR

  • Macにプリインストールされてるrsyncは2.6.9
  • 2.6.9だとiconvオプション使えないので、ファイル名が文字化けしたり場合によってはエラーになる
  • Homebrewでインストールしたrsyncを使うか、ファイル名に日本語を含めないこと!

動作環境

  • racOS ... 10.12.6
  • rsync ... 2.6.9

invalid byte sequence in UTF-8

macOS上でリモートにファイルを同期しようとしたら、突如エラーが出ました.

invalid byte sequence in UTF-8

といったエラーメッセージでした.
こういったエラーの場合、日本語が含まれている可能性があります.
そこでrsyncで同期しようとしたファイルを一覧にしてみると、
ファイル名に日本語が含まれているファイルがありました!

どこで聞いたか覚えてないんですが、プリインストールされている2.6.9のrsyncだと、
iconvオプションもなく文字化けする可能性があるそうです.

Homebrewでrsyncをインストールする

Homebrewで最新のrsyncをインストールします.

$ brew install rsync

$ rsync --version
rsync  version 3.1.2  protocol version 31
Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
    64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
    socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
    append, ACLs, xattrs, iconv, symtimes, no prealloc, file-flags

rsync comes with ABSOLUTELY NO WARRANTY.  This is free software, and you
are welcome to redistribute it under certain conditions.  See the GNU
General Public Licence for details.

あらためて実行し直す

エラーもなくうまく同期されました!

rsync -av path/to/ hoge@example.com:/remote/path/to/

最後に

利用するツールのバージョンは何であるかを確認した上で利用しないと、
意図しないところで問題が起きてしまいますね.
この問題が出たのがリリース作業するタイミングだったので余計に焦りました.
ちょっとだけね.

チョットダケ...

他のツールでも起きがちな問題だし、日本語というか英数字以外はファイル名に含めないようにしておきたいです.