最近の Windows ではあまりなくなりましたが、以前の Windows では、突然ファイルが破損して、何日もかけて作ってきたファイルが一瞬にしてパア、なんてことがよくありました。また、Windows のせいだけではなく、誤操作や誤判断でファイルを消してしまう、なんてことも時々あります。
人間だからミスはするさ…、フッ………
などと言ってみても、内心は呆然。
という時のために、バックアップを作るようにしてます。
ただ、手動でバックアップをすると、手間でもあるし、つい忘れてしまうので、タスクスケジューラに登録して、勝手にバックアップがされるように設定しておくのがよいかと。
このシリーズでは、バックアップの方法に特化して、いくつかのツールとその使い方をご紹介します。
本日は、その第4回 FireFileCopy でバックアップを取る方法。
■履歴つきバックアップ
以前の記事 バックアップで紹介しましたが、FireFileCopy を使うと履歴付きでバックアップが出来ます。
たとえば、
c:\usr\job\xxxxReport.xls
というファイルがあった時に、バックアップを取ると
c:\@backup\job\xxxxReport.xls
というファイルが生成されます。
さらにこれを編集してバックアップすると
c:\@backup\job\xxxxReport.xls
c:\@backup\job\xxxxReport_sync20150410.xls ←以前のファイル
のようになります。
同名のファイルは過去ファイルをリネームしてコピーしておけるので、ファイルの中身を間違えて編集して保存してしまっても、過去に戻って取り出すことができるようになります。
かつては、自作 perl スクリプトでこの動作を実行していたのですが、FireFileCopy を使うようになってからは、完全自動化ができるようになりました。
オプション設定も多彩なので、バックアップには困ることがありません。
■履歴つきバックアップの設定
設定方法は、FireFileCopy のダイアログを開いて
リネーム→自動リネーム
で、同じファイルが有った時のリネームルールを設定しておきます。
私の場合は
abc.txt → ( )abc(_sync?@?y?m?d|).txt
※() 内が入力するところ
のようにします。直接 ffc.ini ファイルを編集しても可能です。
[RENAME]
form2="_sync?@?y?m?d|"
のようにしてやればOK。
マクロ ?y, ?m, ?d などを使ってますが、これはヘルプに書いてあるとおり
?y 10 進数で表す西暦の下 2 桁 (00〜99)
?m 10 進数で表す月 (01〜12)
?d 10 進数で表す月の日付 (01〜31)
です。この他にもいろいろなマクロ指定が使えます。
もしすでに同じ名前があるときには、()をつけて数字がつきます。
■コマンドオプション
FireFileCopyはバッチなどを使って、いろいろなコピーの実行を指示できます。
私は、タスクスケジューラでシャットダウン(正しくはユーザログオフ)時に、バックアップを実行してから終了させるようにしてます(やり方は後述)。
コマンドオプションというのは、「ファイル名を指定して実行」や「コマンドプロンプト」などで、FireFileCopy の実行ファイルをパラメータとともに起動する方法で、
(FireFileCopyのあるパス)\ffc.exe /bg /md /sr /ys /ov:b4c0a2 c:\usr /to c:\@Backup
のように起動時のコントロールをパラメータとして渡してしまって、あとは放置しておけばバックアップがされるようにすることです。
これをバッチファイル化して、パスの通ったところに適当に名前をつけて保存しておけば、勝手にバックアップをしてくれます。
ここで、/ov:b4c0a2 というのがミソ。
★――――――――――――――――――――――――――
/ov:mode
/tXYよりも詳細な上書き動作の指定ができます。/ov:□○...□○ のように指定します。□が条件、○がそれに対する動作を示し、最大5組まで指定可能です。
□で指定可能な条件
a−常に
b−処理元の更新日時が新しい
c−処理元の更新日時が古い
d−処理元と更新日時が同じ
e−処理元と更新日時が違う
f−処理元のサイズが大きい
g−処理元のサイズが小さい
h−処理元とサイズが等しい
i−処理元とサイズが違う
○で指定可能な動作(/tXYと同じ)
0−確認する
1−上書きする
2−上書きしない
3−処理元をリネーム
4−処理先をリネーム(どける
FireFileCopyのヘルプより
――――――――――――――――――――――――――★
という設定で、
・コピー先に古いファイルがあれば、前述のリネーム書式を使ってリネーム
・コピー先にあるファイルのほうが新しければ問い合わせ
・変更していない時には何もしない
という意味です。
これで履歴つきバックアップ機能の出来上がり。
■テスト実行
これまでご紹介してきた他のツールにもありますが、FireFileCopy にもテスト実行という機能があります。
FireFileCopy では、テスト実行すると、コピーのログをテンポラリファイルに吐き出して、それを登録したエディタで表示できます。
以前は朝のファイルコピーは起動時にいきなり SD カードから同期させてましたが、一度、SD カードよりローカルのファイルのほうが新しいことがあって、上書きしてしまい呆然となったことがありました。
このため、テスト実行モードでまずコピーされるファイルの一覧を表示させ、問題がないことを確認してから同期(ファイルコピー)を実行するようにしました。
FireFileCopy のテスト実行モードでは、エディタが閉じられるまで、FireFileCopy のダイアログが閉じられなくなってますので、確実に確認ができるようになりました。
行き届いてますね。