rsyncでのフォルダ同期時の文字化けが解決した
iconvオプションを使えばよかった
前回のエントリの最後のほうで書いたように、rsyncでフォルダを同期しようとしたら、同期自体は正常にできるものの、ログの部分に表示される日本語ファイル名が全部文字化けしておりました。
で、これを解決する方法として、rsyncに--iconvというオプションがあることを知りました。
Macの濁点ファイルをなんとかする - Qiita
http://www.izurunet.jp/2013/04/13/rsync%E3%81%A7%E6%96%87%E5%AD%97%E5%8C%96%E3%81%91%E3%81%99%E3%82%8B%E6%99%82%E3%81%AFiconv%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92
rsyncの最新バージョンをインストールする
ただ、上記のサイトに書かれているようにオプションを付けるだけでは上手くいかなかったんですよね。
やってみると、
rsync: --iconv=UTF8-MAC,UTF-8: unknown option rsync error: syntax or usage error (code 1) at /SourceCache/rsync/rsync-45/rsync/main.c(1333) [client=2.6.9]
というエラーがでる。
これはなぜかというと、Mac OS Xに標準でインストールされているrsyncのバージョンが古くて、--iconvというオプションに対応していないからのようです。
それで、先ほどの
Macの濁点ファイルをなんとかする - Qiita
にも書いてあるように、Homebrewで最新のrsyncをインストールすることにしました。
Homebrew自体入れていなかったので、今回初めて導入しました。
MacにHomebrewをインストールする - Qiita
このページのコメント欄にあるように、最新のURLを指定して、ターミナルから、
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
と打って、指示通りにreturnキーを押してパスワードを入れただけです。
Homebrewのインストール後、さっきのサイトにしたがって、
brew tap homebrew/dupes brew install libiconv brew install rsync
と打って最新版のrsyncをインストールしました。
しかしこれはよく考えたらiconvのライブラリをインストールしているわけなので、ひょっとして、rsyncのバージョンは関係なく、このライブラリの有無だけが問題なんですかね?
シンボリックリンクを貼る
ただ、最新版をインストールしたらそれでおしまいかというと、そうでもなくて、
backup - rsync --iconv option on Mac not working (sync from remote Linux server to local Mac) - Server Fault
このページの解説にしたがって、
sudo -s cd /usr/bin mv rsync rsync-2.6.9 ln -s /usr/local/bin/rsync . exit
という処理をしました。
これはようするに、もともとMac OSの標準のコマンドとしてインストールされていた
/usr/bin/rsync
の名前をまず「rsync-2.6.9」に変更(だからその名前で呼び出せばまた使える)しておいて、同じディレクトリ内にrsyncという名のシンボリックリンクを作成し、従来通りターミナルからrsyncと打った場合にはこのシンボリックリンクを経由して
/usr/local/bin/rsync
を起動することにしたということだと思います。
ちなみに、そのリンク先の
/usr/local/bin/rsync
をみてみたところ、それもじつはシンボリックリンクになっていて、参照先は
/usr/local/Cellar/rsync/3.1.1/bin/rsync
となっていました。ここに、Homebrewでインストールされた最新のrsyncが置かれてるわけですね。
つまりこれは、新しくできたシンボリックリンクである
/usr/bin/rsync
が、いったん
/usr/local/bin/rsync
という別のシンボリックリンクを経由して
/usr/local/Cellar/rsync/3.1.1/bin/rsync
を起動しにいくという、二段ジャンプみたいな感じだと思います。
べつに二段ジャンプにせずに直接参照することにしてもいいと思うし、そもそもターミナルから
/usr/local/Cellar/rsync/3.1.1/bin/rsync
か
/usr/local/bin/rsync
を指定して実行することにすれば、
/usr/bin/rsync
を書き換える必要もないと思いますが。
まぁ、何はともあれ、これでうまく--iconvオプションが使えるようになりました。
rsync -auv --delete --iconv=UTF8-MAC,UTF-8 /Volumes/4TB_Main/ /Volumes/4TB_Backup/
というふうにやると、日本語文字化けしない状態でrsyncを実行することができます。ファイル名の文字コードをUTF8-MACからUTF-8に変えているという意味ですね。
さらなる落とし穴
しかし!
日本語ファイル名を文字化けさせずに同期できるようになったのはいいんですが、ヘンなことに気づきました。
上記のように--iconvオプションをつけると、同期元で更新されていないファイルまで全て新たに同期先へ上書きされてしまい、差分だけの同期にならないです。
解決方法あるのかもしれませんが、現段階ではわかりません。調べてもないけど。
これはかなり困る(同期にものすごい時間がかかる)ので、基本的には--iconvオプションなしで日々の同期を実施し、何かエラーが起きたときにターミナルからログをみながら操作するという場面で使うぐらいにしとこうかな……。
困ったので、人力検索で新たに質問を立てている。
Macでのrsyncコマンドの使い方についての質問です。 http://q.ha… - 人力検索はてな
結論としてはよくわからない。
rsyncコマンドで外付けHDD同士を同期し、バックアップする
rsyncとAutomatorでフォルダ同期を行う
外付けHDDにいろいろデータを入れてるんですが、それをまるごと別の外付けHDDにバックアップする方法を考えておりました。外付けHDDを3台持っていて、1台目はオリジナルデータ用、2台目はiMac本体のTimemachineバックアップ用、そして3台目が空いてるので、これを1台目のバックアップ用にしようかなと。
最初、RAIDで外付けHDD同士をミラーリングを設定しようとも思いましたが、やったことなくてよく分からないし、頻繁に抜いたり挿したりする外付けHDDでRAIDって大丈夫なのか?っていう恐怖もあったので、とりあえずやめとくことに。
Timemachineのバックアップ対象にするという手もありますが、持っているHDDの容量の関係でちょっとむずかしい(ややこしいので具体的な事情は省略)。
結局なにがしたいかというと、1台目の外付けHDDを3台目の外付けHDDに「同期」したいということです。新しく追加したファイルをコピーし、削除したファイルは両方のHDDから消えるように。もちろん、まるごと差し替えではなく、変更があったファイルだけを更新してくれればよい。
フォルダの同期をしてくれるアプリは、ここにいくつか紹介されています。
http://veadardiary.blog29.fc2.com/blog-category-56.html
一応、イメージに最も近いのは「Simple Sync」っていうアプリで、使ってみたら動いたんですが、2008年のアプリでその後アップデートされていないせいか、ちょっと変なところがある。
そこで、もうめんどうなので、「rsync」というシェル(bash)のコマンドをAutomatorに設定して、バックアップの際にこれを毎回起動することにしました。Automator使わなくてもターミナルを起動して打てばいいのですが、アイコンをクリックするだけのほうが簡単なので…。
rsyncの使い方はここにまとまっています。
http://x68000.q-e-d.net/~68user/unix/pickup?rsync
使い方は非常に簡単で、
rsync -au --delete 同期元ディレクトリ 同期先ディレクトリ
と記述すればいい。「-a」はおすすめの設定がまとまっているオプションですが、これだけでは足りないので-uと--deleteを設定しています。「-u」は同期先にある同じ名前のファイルが同期元より新しかった場合は上書きしないというオプション、「--delete」は同期元のファイルが削除された場合は同期先のファイルも削除するというオプションですね。
「--delete」を付けておかないと、同期元で不要になったので消したファイルが同期先ではずっと残っていたり、同期元の内部で所属するフォルダを移動したファイルは移動元と移動先の両方に存在するようになったりして、同期先の容量がどんどん増えていってしまいます。
まず、Automatorを起動して、新規ドキュメント(Application)を作成します。
次に、(私は英語設定で使っているので)「Run Shell Script」を選択して、内容のところに上記コマンドを書くだけです。最初に「cat」って入っているのは消して大丈夫です。
私は「4TB_Main」という名前の外付けHDDから「4TB_Backup」という名前の外付けHDDに同期したいので、
rsync -au --delete /Volumes/4TB_Main/ /Volumes/4TB_Backup/
と書きます。これだけ。
アクセス権のエラーに対応する
ところがこれをAutomatorに設定して起動すると、エラーが出ました。
エラーの内容を確認するため、ターミナルから打ってみました。ターミナルから打つときは、「-v」オプションを付けることで、処理内容の履歴がみれます。ここのエラーの情報も出てきます。
$ rsync -auv --delete /Volumes/4TB_Main/ /Volumes/4TB_Backup/ building file list ... rsync: opendir "/Volumes/4TB_Main/.DocumentRevisions-V100" failed: Permission denied (13) rsync: opendir "/Volumes/4TB_Main/.Trashes" failed: Permission denied (13) done IO error encountered -- skipping file deletion (中略) sent 39781500 bytes received 576 bytes 533987.60 bytes/sec total size is 1859690882822 speedup is 46746.95 rsync error: some files could not be transferred (code 23) at /SourceCache/rsync/rsync-45/rsync/main.c(992) [sender=2.6.9]
まぁ私はこんなのを見てもあまり意味がわからないので、とりあえず最後のほうのエラーコードみたいなやつでググってみたところ、こういう解説がありました。
http://open-groove.net/linux-command/rsync-memo/
しかし、ここに書かれてるようにオプションを「-rlpt」にしても正常化はしませんでしたね。
それで英語のサイトもいくつかみてみたのですが、ファイルシステムがNTFSの場合はコピー出来ないファイルがあるのでどうたらこうたらみたいな説明があった程度で、結局今回の件の解決方法は分からず。
ただ、rsyncが上手くいかない時というのは、要するにデータの所有者だのアクセス権だのの問題が起きているらしいという雰囲気はわかりました。
たぶんですね、さっきの実行結果の中で、「opendir "/Volumes/4TB_Main/.DocumentRevisions-V100" failed: Permission denied (13)」とか「opendir "/Volumes/4TB_Main/.Trashes" failed: Permission denied (13)」とか出ていたところから推測するに、外付けHDDのボリューム(/Volumes/4TB_Main/)の直下にあるシステムファイルの類が、パーミッション(アクセス権)*1の不足によってコピー出来ないという話だったと思われます。
なので、パーミッションを与えておけばいいんでしょう。
パーミッションの変更については、以下の頁を参考にしました。
【 chmod 】 ファイルやディレクトリのアクセス権を変更する | 日経クロステック(xTECH)
ファイルパーミッションの変更 - WordPress Codex 日本語版
UNIXの基礎知識・パーミッション編
まずターミナルで、外付けHDDのボリュームに移動してから、「ls -la」*2と打って、隠しファイルも含めた全てのファイルとディレクトリの属性情報を表示します。
すると以下のような一覧表が表示される。
一番左のrとかwとかxとかが並んでいるところパーミッションですね。見方は上記のリンク先に書いてありますが、1文字目が「ファイルかディレクトリか」を表していて、ディレクトリなら「d」になり、ファイルだと「-」になっている。で、2文字目からは3文字単位で、「所有者のパーミッション」「グループのパーミッション」「その他の人のパーミッション」が並んでおり、この3文字の固まりは「読み(r)」「書き(w)」「実行(x)」を表している。
たとえば「.DS_Store」は「-rwxr-xr-x」なので、これはファイルであって、所有者には読み書き実行が全て許されているが、グループとその他のユーザには読みと実行しか認められていない。
で、rsyncを実行するのは所有者なので、たぶん所有者に「r」が許されていないファイルがコピーできなくて問題になるんじゃないでしょうかね。実際、「.DocumentRevisions-V100」と「.Trashes」は「r」が許されていません。
まぁ、ゴミ箱なんて同期する必要がないとも思いますが、まるごとコピーするのが目的なので、ボリューム内の全てのファイルについて、「所有者はrwx、グループとその他はr-x」という設定に変えておきます。(1個1個設定してももちろんいいんだと思います。)
ネットワークに繋がってたりするとアクセス権を安易に緩めるのもヤバイ気がしますが、私の場合は大丈夫でしょう、たぶん(よく分かってない)。
「rwx」は数字の7、「r-x」は数字の5が対応しているので、
chmod -R 755 /Volumes/4TB_Main/ chmod -R 755 /Volumes/4TB_Backup/
としておきました。「-R」は「再帰的に変更」ってやつで、配下のファイル・ディレクトリにすべて適用するという意味のオプションです、たぶん(よく分かってない)。
以上のように設定してからrsyncを再度試したところ、めでたく、エラーが起きなくなりました!
あとは、「HDD_Sync」と名づけて保存したアプリをクリックして、
歯車の表示が消えるまで待ってれば同期が完了します。
さらに、↓に説明されているような手順で、たとえば毎日朝3時に同期するみたいなスケジュールを組んでおくこともできますね。(今はiCalではなくCalendarですが。)
http://www.arataman.com/index.php?ID=194
ファイル名長すぎるというエラー(追記)
上手くいったとおもったのですが、同期が終了するのを待っていたら、以下のようなエラーが起きていました。
rsync: recv_generator: failed to stat "/Volumes/4TB_Main/01_Working/?\#207??\#202\#212?\#234??\#203??\#233??\#220?\#233??\#215/91_?\#220?\#224?\#201\#213?\#202\#211/?\#202??\#202??\#203??\#203?F?\#203??\#203\#236?\#202??\#203\#213?\#203??\#203??\#203??\#200\#201?\#203??\#202??\#202??\#202\#231?\#203??\#202??\#203??\#202??\#202\#231?\#202??\#203??\#203\#210?\#203??\#217?\#214永?\#230\#237?\#210訳?\#211?\#217?\#225?谷?\#235?\#200?\#210解説?\#211?\#200\#216?\#237??\#201??\#201\#204?\#201\#213?\#201??\#201\#227?\#201??\#200\#214?\#206\#215?\#231??\#230\#216?\#200\#215?\#201\#225?\#202\#214?\#201\#237?\#201\#213?\#200\#225?\#202??\#203??\#202??\#202??\#203??\#203\#210?\#202\#231?\#203??\#202??\#233??\#233?館?\#201\#213?\#202\#211?\#202??\#203??\#202??\#203??\#203\#215?\#203\#203?\#203\#210?\#201??\#201??\#202\#231?\#200\#225?\#200\#217?\#227??\#214BP社.pdf": File name too long (63)
こういうものなんですが、文字化けしてるのはとりあえず措いといて、ファイル名が長すぎるよと。
いや、そう言われても、OS上で普通に認められている長さのファイル名しか付けてないはずなのですが……rsyncの時にはそれよりも制限が厳しいんですかね?
よくわかりませんが、このエラーがたくさん(といっても10ファイルぐらい)出ていたので、仕方なく1個1個ファイル名を短めに変更していったら、一応エラーは出なくなりました。
ところで上記の文字化けは何とかならないんでしょうか。
ファイル名はUTF-8のはずで、ターミナルもUTF-8に設定しているし、このへんを参考にbash_profileに
export LANG=ja_JP.UTF-8 export LESSCHARSET=utf-8
という2行は書きましたが、解決せず・・・。
ふつうにフォルダを移動したりファイルを開いたりする分には、日本語でできてるんですが、rsyncの処理結果の部分だけ文字化けしてしまいます。
上記の作業では、ファイル名の中に英数字の部分もあるので、それを頼りに「どのファイルのファイル名が長すぎるのか」を特定してGUIでファイル名変更しましたが。
iMac with Retina 5Kが届きました(開封の儀)
iMac届きました
先日書いたとおり、iMac with Retina 5Kモデルを買いまして、土曜日に届きました。「レティーナ」とか言うひといますが発音は「ゥレトナ」みいな感じですので気をつけてください。
iMacが届いたら、スタバで開封しようとか言ってたのですが……
27インチって思ったよりデカい!!
しかもクソ重いぞ。何これ。
しかし、ダンボールを取ってみると……
持つところがある!!www
これならスタバまで提げていける気がしてきました。
とりあえず土曜は用事があったので、iMacは家に放置して出かけました。
早くいじってみたいところですが、開封は日曜までおあずけです。
祈り
さて日曜朝です。都内某所。
今回のiMacはスペック特盛り構成で40万円弱もしたので、できれば5年ぐらい安全稼働してもらいたいわけですが、Apple Careは2年しか助けてくれませんので、それ以降は神の力を頼る必要があります。
きよめます。
祈ります。
壊れませんように。。。
賽銭は10円しか入れてませんが。
さて、ぶっちゃけめんどくさいっていうか、重いんですが、とにかくスタバへ移動することにします。
開封の儀
というわけでスタバに来ました。
さっそく開封を始めます。
キーボードとかは強制的に付いてきますね。こないだBluetoothキーボード新しいやつ買ったばっかだったので、キーボードは要らないんですが。
マウスは持ってるので、Bluetoothのトラックパッドを選択しました。
中にiMac、見えますね。
箱から取り出します。
「ここを持てばバランスとれる」っていうポイントがなくて、けっこう持ちにくいです。
とりあえずこのフィルムを剥がしましょう。
穴がぜんぶ後ろにあって挿しにくいと評判の、背面です。
コンセントをさして、
電源を入れます・・・
おおおおこれは鮮明すぎるwww
Retinaは想像以上にすごいかもしれない。
とりあえず何も設定してないというか、MacBook Airから環境を移行する必要があり、4時間ぐらいかかりそうなので、コーヒー飲んだら帰ります。
てか、スタバにiMac持ってきても画面が近過ぎてしんどいですね。視界がiMacで埋まります。
そして、自分で写真とっても何してるのかイマイチよくわからないですね。近すぎて。
ただ、珍しかったのか、列に並んでいるお客さんが写メとか撮ってました。
帰宅〜設定
帰宅して、MacBook Airの環境をTimemachine経由でiMacに移しました。
Airはそのまま使い続けますが、とりあえずアプリとか設定とかはいったん丸ごと移行したほうが楽なので。コンピュータ名だけは変えないといけないですが。
以前は、Timemachineからの復元って、ほんとに何も設定する必要なく使用を開始できたんですが、最近は端末変わるとアカウント認証をやりなおさないといけないサービス(Googleなど。MACアドレスとかは取得してないと思うのですが)も多く、いくつかは再設定しなければなりませんでした。
データ量は200GBぐらいで、3時間ぐらいかかった気がします。
http://blog.livedoor.jp/dankogai/archives/51875372.html
Thunderboltケーブル一本で引っ越せて、しかも20分後には今まで通りの環境がそこにある。競合他者に一番真似してほしいのに、一番真似してくれないのがこれである。引っ越しの労苦こそ、新品への買い替えを控えてしまう理由の最大ではないか。Microsoftは新OS開発の1/10でも、移行ツールに投資するべきではなかったか?Appleでさえ、Windowsからの移行アシスタントを用意しているというのに。
確かにThunderboltでMac同士をつないだほうが早そうですね。次からそうしよう。
さて態勢が整いました。
まず、iMacを置いたことによって、カレンダーが見えなくなってしまいました。
画面を間近でみると、アイコンがクソきれいですwww
なんかですね、YouTubeもすごく綺麗に見えます。
Retinaだから、720pとか1080pの動画が、拡大再生しなくてもそのまま生きてくる感じです。
iPhotoを開くと、1個1個のサムネイル画像がとても鮮明で、なんかこういうの気持ちいいです。ほんと。
ディスプレイの解像度設定は「Best」ってのを選んでるんですが、これは2560*1440という解像度です。
これはどのぐらいの大きさなのかというと、MacBook Pro with Retinaの13インチの横幅ピクセル数と同じぐらいで、従来型iMacの25%増しぐらい。
↓に写っている飛行機の映像がフルHDです。
これは所詮、解像度を扱いやすい大きさに落として表示させてるわけで、5Kでもなんでもないです。でも全体的に、めちゃめちゃ綺麗に見えます。2560に落としてあると言っても、文字なんかはきれいにしてくれてるんですかね?
ここで、解像度設定を5Kにしてみましょう……。
これはwww
フルHDがこんなに小さくなるとは!!
スクリーンショットの画像ファイルが25MBぐらいになってしまい、大きすぎてアップできなかったので(クッソw)、縮小してから掲載しています。
しかし、たしかに5Kだということは分かりましたが、実用上どこまで必要なのかはイマイチわかりませんね。
右上の方に、何か通知のようなものが出ているのですが、もはや小さ過ぎて、何が起きているのかを知ることができません。
感想
私はRetinaディスプレイについて、届く前は「Retinaディスプレイである必要は全くないよね」とか思っておりました。
また、そもそも今回私がRetinaモデルを選んだのは、きれいな画面で見たかったからではなく、単にRetina版のほうがCPUの性能なども高いものを選べたからです。
しかしですね、使ってみると「あ、やっぱRetinaにしといてよかったwww」という感じです。全然違うわこれ。もはや印刷物のポスターなどを眺めている感覚です。
5Kモードにして見る必要はなく、普通のRetinaモードでちょうどいいですが。
処理性能については、これからいろいろ使ってみて確かめていきますが、iMacの中では最高スペックにしているので、当然サクサク動いています。
Handbreak
Handbreakで動画のエンコードやってみましたが、それなりに時間はかかるものの、さすがにけっこう早かったです。同じファイルをMBAとiMacで同時にエンコードしてみたら、MBAで4分44秒かかるファイルが、iMacだと1分32秒でした。
やはり負荷は大きいので、エンコの時に限ってはiMacのファンが盛大に回ります。
Evernote
Evernoteのアプリの動きは、このiMacでも少しもたついたままではあって「マジかよ……」と思いました。私のようにノート数が万単位になってくると、ソフトウェア側になんか問題があるんでしょうかね。
もちろん、MacBook Air上で使った感じよりはだいぶスムーズに動いて嬉しいです。
Final Cut Pro X
動画編集は、FCPXを少し動かしてみた感じではかなりサクサク行けますね。プレビューとか超スムーズだし、各種操作に対しても遅れずに反応が帰ってきます。これはかなり、スペックの恩恵を感じます。
本体をせっかく1TBのSSDにしたので、作業用のライブラリは本体側に置こうかと思います。外付けだと通信速度がボトルネックになるので。ただし編集終わったやつは、残しとくとさすがに容量を食うので、外付けHDDに入れます。外付けもThunderboltのやつにすれば、USB3.0より倍ぐらい速いらしいので外付けのまま編集していいかもしれませんが、まだUSB3.0より1.5倍ぐらい値段が高いので買ってないです。
その他
なぜかLINEのアプリは、ウィンドウを高速でドラッグするとカクカク遅れてついてくるような感じになります。前後のタイミングで他の重そうなアプリを高速でドラッグしてもそうはならないので、LINEのアプリがなんかおかしいようです。
Twitterの公式クライアントは、MacBoo Airだと結構うごきがカクカクして見づらかったのですが、iMacでは滑らかに動いていて良かったです。
あと1個気づいたんですが、本体スピーカーはあまりよくないですね。低音がけっこう出ていて良い面もあるのですが、iMac本体ボディの空洞内に微妙に反響しており、モワンモワンした音になっています。MBAのスピーカーの音の方がきれいかもしれません。
私は音質にこだわりはないので、べつにいいのですが、
とりあえずもう少し使って見ます。