改めて、コマンドプロンプトの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」などとして保存。
ショートカットをデスクトップに保存するなり、スタートアップに登録するなり。
タスクに登録すれば、定期的に実行できます。

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

 







-開発メモ

関連記事

なぜ、エラーが発生する? VirtualBoxでのUbuntu Linuxの起動に再チャレンジ。

前回、会社で遊べる勉強できる環境としてUbuntu Linuxを導入しようと画策していました。 前回は、あえなく断念・・・ 日本の中心付近で仕様変更と闘うSE日記VMWareがだめだったから、Virt …

[ORACLE]SQLのIN句にパラメータを適用する方法

カンマ区切りの文字列を取得した理由 こないだの続きです。 日本の中心付近で仕様変更と闘うSE日記[C#]リストをカンマ区切りの文字列で出力するhttp://ht-jp.net/blog/pc/c/c- …

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

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

[VMWare Fusion]VMWare Fusion 11がBigSurで使えなかった話。

  現在、WindowsとMacの2OS持ちの私ですが、2OSにはデメリットもありまして、それをカバーするために、VMWare Fusionを使用してWindowsとの橋渡しをしたりしてる訳 …

[C#]文字を繰り返したものを取得したい。

いちいちfor文とかで繰り返すのも効率が悪いなと思ってたので、処理を関数化・・・ ただ、共通関数として登録しないので、別のところで使いたい場合は、同じ関数が複数登録されちゃうことに・・・ 更には、思い …


カテゴリー