T42のハードディスクが手狭になってきたので、500GBの外付けハードディスクを買ってきた。ThinkPadのハードディスクを換装したあとに残った40GBと80GBの2.5インチハードディスクをHDDケースに入れたものもある。この3台を使い分けることにした。容量を食っているのがiTunesのライブラリだ。これを80GBに追い出して、80GBに入っていた諸々のバックアップを500GBに移すことにする。データ移行はエクスプローラのドラッグ&ドロップでやっていたが、これでは芸がない。Windowsリソースキットツールのrobocopyをこの機会に覚えることにした。日々のバックアップはxcopyやMFSyncでやっていたのだが、robocopyのバッチも作った。バックアップ方法は差分バックアップとする。T42やiTunesライブラリで追加・変更されたファイルだけを500GBにコピーする。robocopyで差分バックアップするときのパラメータはこれが基本だ。/tee/e:空ディレクトリも含めてサブディレクトリをコピーする。/xo:コピー先のタイムスタンプが新しい場合はコピーしない。いうわけか、robocopyでコピーした先のタイムスタンプが元のファイルより古くて(エクスプローラの表示上は同一だが)、バックアップのたびに同じファイルをコピーするという現象が起きた。これを回避するためのオプション。/log+:ログファイルに追記する。ログファイルは日付時刻を含んだ名前にする(下記参照)。/np:コピー進捗率をログに表示しない。デフォルトでは、コピーした割合が10%、20%と表示される。画面で見る限りは便利なのだが、不要な行がログファイルに大量に出力される。これを回避するためのオプション。/tee:デフォルトでは、ログファイルに出力すると画面に何も表示されず、進捗がわかりにくい。/teeを付けるとログファイルと画面の両方にメッセージが記録される。差分バックアップ運用を続けていると、コピー元から削除したがバックアップ先に残っているというファイルがだんだんたまってくる。バックアップなのだが、バックアップ先の容量が肥大化しすぎないように、ときどき整理する必要がある。コピー元とコピー先を同じディレクトリ構造に同期するには、/purgeオプションを使う。コピー先のファイルを削除するのは危険なので、どのファイルが削除されるかをチェックしてからにしたほうがいい。そのためのオプションはこうなる。/nocopy/purge:コピー先だけに存在するファイルを削除する。/l:ログ出力のみでコピーしない/nocopy:/lで十分と思われるが、念のためにコピーしないオプションも付けておく。ログで「EXTRA」とマークされているファイルが削除対象だ。確認したあと、/lと/nocopyをを付けずに実行すればよい。バックアップのログファイル名は、日付時刻を付加した「backup_20080322_130401」の形式にしたい。Windowsバッチファイルでこういうファイル名を使う方法は、@ITの次の記事を参考にした。「バッチ・ファイル中で日付をファイル名に使用する」http://www.atmarkit.co.jp/fwin2k/win2ktips/419batchdate/batchdate.html以下の3行をバッチファイル先頭に記述し、robocopyに「/log+:%FNAME%」オプションを指定すればよい。»コメント>どういうわけか、robocopyでコピーした先のタイムスタンプが元のファイルより古くて(エクスプローラの表示上は同一だが)、バックアップのたびに同じファイルをコピーするという現象が起きた。外付けHDDのファイルシステムはなんでしょうか?FATだと以下のような問題が該当するかもしれません。コピーされるとき、タイムスタンプが変更されます。00時37分ThinkPadはNTFS、バックアップ先はFAT32です。/xoなしでコピーされるファイルのタイムスタンプを秒単位で確認したら、ソースとターゲットで2秒違っていました。この技術情報が該当するようです。ありがとうございました。22時21分コメントを書く名前:メールアドレス:(ウェブ上には掲載しません)アドレス(URL):この情報を登録するコメントは記事投稿者が公開するまで表示されません。ITプロフェッショナルの仕事術)。