改めて、コマンドプロンプトのrobocopyコマンドでバックアップを行う。

投稿日:

以前、会社では、バックアップ用のソフトを使っていたことがあります。
それも、社内ではなく、お客様用にw

まぁ、それ自体は良いんですが、割とケチ?な会社だったので、使っているのはフリーソフト
確か、商用利用もOKだったはずなので、そういう意味では問題なかったと思うんです。
が、重要なはずのバックアップをフリーソフトに委ねるってのも怖い話なんですよねー。
大体、責任は負いませんよ?って利用許諾とかにかいてあります。

フリーソフトを使って、バックアップに問題があった時に、誰が責任を取るんでしょうね?
だって、フリーソフトの作者に、会社の損害(あったとして)の責任を追及するとか無理な話ですよ。
そういう時のために、お金を払うサポートがあるんだしね。

ということで、フリーソフトだと、開発終了したり、最新OSへの対応がされなかったりすることがあります。
なるべくお金はかけたくない、けど、何かあった時にお客さんに説明できる内容と、責任の所在を会社にしたくないっていう時は多々あると思います。

そんな時のコマンドプロンプト

robocopyというコマンドでバックアップもお手軽に。
Windows7以降なら普通に使えるし、しかも、お客さんへの説明も「OS機能のバグですね・・・」とか言っておけば角が立たないっていうオマケつき。

robocopyって何?

コマンド 内容
C:\A コピー元 Aフォルダの内容をコピーします
D:\B コピー先 Bフォルダにコピー元の内容をコピーします
/R:5 オプション 失敗した時の繰り返し回数(規定は1,000,000)
/W:5 オプション 再試行までの待機時間(規定は30秒)
/MIR オプション ディレクトリのミラー化

こんな感じです。
コピー元コピー先は間違えると、大変なことになるので、テスト用のフォルダを作るなどして、必ず実行前にテストは行ってください
極端な例ですが、コピー先とコピー元を間違えて、コピー元が空フォルダだった場合、本来コピーしたいフォルダの中身が空になります。

次に繰り返し回数の「/R」

これは設定必須です。
エクスプローラ上でコピーとかする時にあるんですが、ファイルが壊れていたりして途中で終了
してしまうことありませんか?
そういった場合や、ファイルが使用中でコピーできない時とかに繰り返しコピーを行う回数です。
規定回数が1,000,000回なので、次に記載する「/W」オプションの規定値30秒と組み合わせると、1個コピーできないファイルがあるだけで、夜のうちにコピーが終わらなくなりますw
5回も試行すれば十分です。

それ以上やっても、駄目なファイルは駄目なので。

待機時間の「/W」

先に書いた「/R」オプションの次の試行までの待機時間です。
好みの問題ですが、5秒程度で問題ないです。

試行回数と合せて、10秒以上コピーできないようなファイルは、コピーできない可能性が高いので。

ミラーリングの「/MIR」

バックアップとしてなら、このオプションでOKです。
同じファイルは上書きしないので、差分バックアップとして使えます。
コピー元で削除したものは、コピー先からも削除されるので、トラブル時のバックアップの戻しとしては有効です。

他にも、ファイルの移動にしたいなら「/MOV」、フォルダごと移動するなら「/MOVE」。
ファイルを消さずにコピーだけしたいなら、「/S /E」。

他にもオプションで細かく設定出来ますが、オプションとしてはこれくらいが使えれば、個人のバックアップとか部署レベルのバックアップなら困らないです。

タスクに登録して自動化

出来上がったコマンドは、「backup.bat」などとして保存。
ショートカットをデスクトップに保存するなり、スタートアップに登録するなり。
タスクに登録すれば、定期的に実行できます。

これ以上の機能が必要なら、システム管理者とかにお願いしましょう。

 







-開発メモ

関連記事

[Oracle]破棄されたオブジェクトにアクセスできません。 オブジェクト名 ‘oracleconnection’ です。

破棄されたオブジェクトにアクセスできません。 オブジェクト名 ‘oracleconnection’ です。 破棄されたオブジェクトかどうかの判断(MSDK) MSDNでも破棄さ …

no image

[Xcode]C#とは違うエラーキャッチ方法

先日から、Swiftの勉強をしているわけですが、未だに仕事でメインで使っているC#との違いで戸惑うことがちらほらと。 repeat文なんて、VBやC#じゃ見ないよな。forやwhile文が対応してるけ …

コマンドプロンプトのFor文で、ファイルの一覧を表示する。

コマンドプロンプトの出力結果を引数として、別のコマンドを実行させる。 なんてことが出来ることは知ってるんだけど、どうやってやるのかは良く分からない。 おもむろにコマンドプロンプトを立ち上げて、以下のコ …

[ORACLE]ORA-00918:列の定義が未確定です・・・のエラーにならなかった

なんでエラーになるものをマージしてるんだ? と、怒られました。 一瞬、理解が出来ず・・・ で、エラーを再現してもらう・・・と。 あっさり発生。 早く修正しろって突っ返されました。 頭には「?」しか浮か …

[VB.net]TextBoxで、マウスクリック(1回目)だけ、内容を全選択させる

結構前に書いた記事 日本の中心付近で仕様変更と闘うSE日記[C#]TextBoxで、マウスクリック(1回目)だけ、内容を全選択させるhttp://ht-jp.net/blog/pc/c/c-textb …


カテゴリー