Windowsのファイルを有償ソフトを使わず簡易的にバックアップしたいときは Robocopy を使う方法がある。あくまでも簡易的なバックアップが必要になった時に作成した備忘録。
ROBOCOPY コマンド
基本構文と使い方
ROBOCOPY <コピー元> <コピー先> オプション
オプションは結構たくさんあるが、色々なサイトで紹介されているので割愛。とりあえずバックアップ取りたいけど、調べるの面倒という方や、単純に全く同じ内容でバックアップが取りたい場合は下記の通りのオプションでよいかと思う。
ROBOCOPY <コピー元> <コピー先> /COPYALL /MIR /B
コピー元先がリモートサーバの場合は \\サーバ名\フォルダ という形で表記する
ローカルドライブ間でバックアップ
> ROBOCOPY C:\data D:\backup\data /COPYALL /MIR /B
リモートサーバを指定する場合
> ROBOCOPY C:\data \\remote-serv\backup\data /COPYALL /MIR /B
指定しているオプションは下記の通り。コマンドプロンプトで robocopy /? と入力するとヘルプを参照することができる。
オプション | 内容 |
/COPYALL | ファイル情報を全てコピーする。/COPY:DATSOUと同じ。 |
/MIR | ファイル構成は全く同じにする。/E 、 /PURGE と同じ |
/B | バックアップモードでファイルをコピー |
/MIR モードは同じ構成で同期をとるようなイメージだが、コピー元とコピー先の指定を逆にすると大変なことになるので注意。
バックアップを定期的に実行する。
定期バックアップのように運用したいのであれば、バッチファイル化してタスクスケジューラで実行すればよい。
バッチファイル化
バッチファイル化にあたり、コピー元先を変数化してログを日付で取得するようにして、c:\scripts 配下にrobocopy.bat という名前で作成した。
C:\data を \\remote-serv にバックアップとるようにしている。
@echo off
set yyyyMMdd=%date:/=%
SET src=C:\data
SET dst=\\remote-serv\backup\data
robocopy %src% %dst% /COPYALL /MIR /B /LOG:C:\scripts\robocopy_%yyyyMMdd%.log
タスクスケジューラに仕込む
タスクスケジューラを呼び出し、タスクを作成していく。
毎日1:00 に設定するように設定する場合は下記のようになる。
作成したバッチファイルを指定する。
コメント