2019年7月2日火曜日

Windowsコマンド:「ROBOCOPY」での簡易バックアップ

 大切なデータを守るためにもバックアップは重要ですが、今のWindowsにはROBOCOPYコマンドがあるので便利ですね。
 使い方は簡単。コマンドプロンプトを立ち上げてコマンドを実行するだけ。

 ROBOCOPY コピー元データフォルダ コピー先データフォルダ /MIR
 ※使い方を誤って逆にするとコピー元を壊しかねないので注意してください。
 (/MIRはミラーモード(複製のため、元で削除されたデータは先でも削除)です。細かい使い方は、ヘルプオプション付き「ROBOCOPY /?」で確認できます。)

 ただし、過去一回一個だけのバックアップを取っていても「もう一個前の変更する前のファイルが欲しい・・・」とか、「数日前に消しちゃったからバックアップも消えてる・・・」なんてこともありますよね。
 そんな時は、曜日や日にちの文字をフォルダにつけてバックアップを取っておく方法が手っ取り早いです(もちろんその分のハードディスク容量は必要ですが)。

 DOS(コマンドプロンプト)では、変数の文字列置換を無理やり使って、コマンド実行時の%DATE%変数の一部を抜き出して出力フォルダ名にあてがうことで、約一か月後まで上書きされることなく容易に取っておくことが出来ます。

 変数の抜き出し例:%DATE:~8,2%
 コマンドプロンプトで「ECHO %DATE%」と打つと、日本語環境では「2019/07/02」と表示されます。
 この文字列の、“0個目から数えて8文字目”から“2文字”だけを取り出すことで「02」だけが取得できます。
 これを使い、コピー先フォルダの末尾に付け足すことで“毎月のその日のみ”のフォルダを作りバックアップすることになります。

 ROBOCOPY コピー元データフォルダ コピー先データフォルダ%DATE:~8,2% /MIR

 ついでにログファイルも取っておきたい場合は、オプションの追加をします。ログファイルも日付毎に分けて取っておくことを想定し、%DATE%を分解してつけておきます。

 ROBOCOPY コピー元データフォルダ コピー先データフォルダ\%DATE:~8,2% /MIR /LOG+:ログ出力先\%DATE:~8,2%.log


 実際の使用例で書き直すと以下のようになります。

  • クライアント上で実行し、サーバーにある共有フォルダを自端末にバックアップ
  • バックアップ元はXドライブにネットワーク接続されていて、以下すべてを対象
  • バックアップ先は自DドライブのBKフォルダ下にし、日付フォルダを作り以下にバックアップする
  • ROBOCOPYはミラーモードで動作させる
  • ログファイルはDドライブのBKフォルダ下に日付.logで追記保存

 実行例:
 ROBOCOPY X:\ D:\BK\%DATE:~8,2% /MIR /LOG+:D:\BK\%DATE:~8,2%.log

 結果例:
 


 ※データのフォルダは自動的に作成されますが、ログファイルのフォルダは作られないため、すでに実在しているフォルダパスである必要があります。
 ※毎日タスクスケジューラで自動実行させたいところですが、直接指定しても途中の:で切れてしまうようなので、バッチファイル化して設定する必要があります。


- PDS PIS 研究室 室長 -

0 件のコメント:

コメントを投稿