【Windows】ROBOCOPY でリモートサーバにタスクスケジューラでバックアップする。

スポンサーリンク

Windowsのファイルを有償ソフトを使わず簡易的にバックアップしたいときは Robocopy を使う方法がある。あくまでも簡易的なバックアップが必要になった時に作成した備忘録。

ROBOCOPY コマンド

基本構文と使い方

ROBOCOPY <コピー元> <コピー先> オプション

オプションは結構たくさんあるが、色々なサイトで紹介されているので割愛。とりあえずバックアップ取りたいけど、調べるの面倒という方や、単純に全く同じ内容でバックアップが取りたい場合は下記の通りのオプションでよいかと思う。

ROBOCOPY <コピー元> <コピー先> /COPYALL /MIR /B

ローカルドライブ間でバックアップ
> ROBOCOPY C:\data D:\backup\data /COPYALL /MIR /B

コピー元先がリモートサーバの場合

コピー元またはコピー先がリモートサーバの場合は \\サーバ名\フォルダ という形で表記する必要があるため、共有設定が必要となる。また、Robocopyは、リモート共有先にアクセスする際、現在ログインしているユーザーの資格情報を使う。そのユーザーがリモート先にアクセスできない場合、エラーとなるため、事前に事前に資格情報を登録する

資格情報を登録
net use \192.168.1.100\backup /user:backupuser password
C:¥data をリモートサーバ(\\192.168.1.100\backup)にコピー
robocopy C:\data \\192.168.1.100\backup /COPYALL /MIR /B

クライアントは要求された特権を保有していません。

クライアントは要求された特権を保有していません。とエラーが出る場合はCOPYALL でセキュリティ情報もコピーしようとするが、権限が不足してエラーとなるケースが多い。この場合はサーバ移行など、完全なバックアップを必要とするケースを除き、 /COPYALLを/COPY:DAT に変更することでファイルのコピーは可能。

robocopy C:\data \192.168.1.100\backup /COPY:DAT /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 に設定するように設定する場合は下記のようになる。

作成したバッチファイルを指定する。

コメント

タイトルとURLをコピーしました