有馬総一郎のブログ

(彼氏の事情)

2013年03月23日 00:16:00 JST - 3 minute read - Windows

robocopyの繰り返されるコピーの問題

Windows 8になってからのrobocopyだが、深刻な問題が起きていた。自宅のUbuntu Serverには、sambaを導入して音楽ファイルのバックアップフォルダ 兼 Subsonicの音楽ディレクトリがある。それに対して、一度同期をとったはずのファイルも、更新済みとクラス分けされ、何度もコピーするのだ。

robocopy "E:\My Music\김경호" Z:\Public_Music\test *.* /S /COPY:DT /PURGE /XO /XA:S /XF *.flac *.wave *.mp4 /R:0 /FFT /FP /NS /NDL /NP /UNICODE /UNILOG:logfile.txt

有馬総一郎のブログ
1回目(1) 画像小さくてすまん

有馬総一郎のブログ
1回目(2)

有馬総一郎のブログ
2回目(1)

有馬総一郎のブログ
2回目(2)

有馬総一郎のブログ
製品バージョンの書き方変わった・・・

これは、正直困った。NTFS同士だと、そうした問題がおこないので、まずは、ファイルのファイル時間の精度をFAT粒度(2秒)にする/FFTをつけた。しかし、駄目。ディレクトリ情報をコピーしない/NODCOPYを付けたり、/COPY:Dだけにしてみたり(しかし、これはログを見ると絶対DTになる)、逆に/SECを付けたりしたが、駄目。

アクセス日時が問題かと思ったが、robocopyではオプションによるがコピーしたことでアクセス日時は更新されない。一度全部削除して、同期を取り直してみたが、それも徒労に終わった。

で、昔のバージョンを落としてきてやったみた。すると XP010バージョンだとちゃんとスキップされる。

有馬総一郎のブログ

有馬総一郎のブログ

マイクロソフトから rktools.exeをダウンロードして、解凍、 rktools.msiファイルの展開を繰り返すと XP010が手に入る。インストールは不要、叩けば使える。1

.\XP010\robocopy.exe "E:\My Music\김경호" Z:\Public_Music\test *.* /S /COPY:DT /PURGE /XO /XA:S /XF *.flac *.wave *.mp4 /R:0 /FFT /FP /NS /NDL /NP /LOG:logfile.txt

有馬総一郎のブログ
1回目(1)

有馬総一郎のブログ
1回目(2) ハングル文字化け

有馬総一郎のブログ
2回目

じゃあ、文字コードをUNICODEで扱える/UNICODEオプションが付いた XP026でやると、何としたことか、ログ出力までがUNICODEで。まさに私の描く完璧な形でバックアップが取れるようになった。

有馬総一郎のブログ

有馬総一郎のブログ

テクネットマイクロソフトからrobocopyのGUIツール・UtilitySpotlight2006_11.exeをダウンロードして、同じく解凍2回、setup.msiファイルの展開をすると XP010が手に入る。インストールは不要、叩けば使える。2

.\XP026\robocopy.exe "E:\My Music\김경호" Z:\Public_Music\test *.* /S /COPY:DT /PURGE /XO /XA:S /XF *.flac *.wave *.mp4 /R:0 /FFT /FP /NS /NDL /NP /UNICODE /UNILOG:logfile.txt

有馬総一郎のブログ
1回目(1) ハングルもケンチャナヨ

有馬総一郎のブログ
1回目(2)

有馬総一郎のブログ
2回目

robocopyは X026がベストということだ。日本語のサイトは、ほんとに、何故こんなに情報が少ないんだ!、と嘆きたくなるが、英語のサイトだと色々バグの報告が上がっている(robocopy bugsでググる)。Vista以前のシステムだと、セキュリティ属性が正しくコピーされなかったりするらしいので、あまり細かいオプションは付けない(期待しない)ほうが良い気がする。

もしrobocopyの文字化けや、何度も繰り返されるコピーに悩まされたら、あれこれ試す前にとっと XP026バージョンを落としてくることを薦めたい。バージョンが上がるほど、バグが増えるってのも凄いツールだな。ともあれ、めでたし、めでたしだ。


  1. http://www.microsoft.com/en-us/download/details.aspx?id=17657
    msi展開はrktools.msiのあるファイルまで移動して、msiexec /a rktools.msi targetdir="[展開先のフォルダ]" /qnを実行。exeファイルの解凍は Explzh for Windows (x64) Version7.10を使った。 ↩︎

  2. http://technet.microsoft.com/en-us/magazine/2006.11.utilityspotlight.aspx
    msi展開は setup.msiのあるファイルまで移動してmsiexec /a setup.msi targetdir="[展開先のフォルダ]" /qn ↩︎

Tags: MS-DOS

robocopyでのUNICODE出力の謎 Subsonic 4.7はJava 1.7には対応してないようだ