##やること
- ファイルサーバ上にあるファイルを定期的バックアップしたい
- バックアップ先はサーバと同一LANにあるローカルマシンである
- このバックアップをスケジューリングしたい
ローカルマシンはWindows7.
バックアップ先はWin機にマウントしている外付けHDD(F:\)とする
##前提: ファイルサーバのドライブマウント
後々にコピーをコマンドで実行するために,ファイルサーバをWindows上でマウントしておく.
$> net use * \\[ServerName]\[UserName] * /user:[UserName] /persistent:yes
このコマンドをWindowsのcmd上で実行することで,ファイルサーバ上のホームディレクトリ/共有ディレクトリを参照できるようになる
##バックアップ
バックアップ元:
サーバー名"Server"のディレクトリ/home/hogehoge
バックアップ先:
Win機の外付けHDD(Fドライブとしてマウント)
使うコマンドはrobocopy
パソコンのファイルをrobocopyで手堅くバックアップする方法
robocopyでフォルダをバックアップ/同期させる
$ robocopy \\Server\hogehoge F:\backup\hogehoge /mir
上記のコマンドをDOS上で実行すると差分コピーが一回完了するはず.
コピー元のディレクトリが,サーバー中に"/home/hogehoge" のパスで存在していたとしても,Win機側から見ればパスは"\Server/hogehoge" である
バックアップのスケジューリング
前述のrobocopyコマンドに,Read/Writeのオプションなどを付け加える.
robocopy \\Server\hogehoge F:\backup\hogehoge /mir /log:"C:\Users\hogehoge\Desktop\log.txt" /r:0 /w:0 /NDL /FFT /NP
/R:0, /W:0
読み書き共に0回までの再試行を行う
/NDL
出力にファイルパスを表示しない
/FFT
更新時間の比較に2秒の誤差を許す
(バックアップ元がネットワーク上であるため必要)
/NP
進行中の状況を非表示
このコマンドをバッチファイルにする.
タスクスケジューラを起動する
"タスクの作成"より,
[全般]タブ
- "ユーザがログオンしているかどうかにかかわらず実行する"
- "最上位の特権で実行する"
[トリガー]タブより,
- 毎日/毎週/毎月などのスケジュールを設定
[操作]タブより,
- "プログラムの開始"
- プログラム/スクリプトに作成したバッチファイルのパスを指定する
- "開始"フォームにバッチファイルを置くディレクトリのパスを指定する
以上,パスワードを入力すると
スケジューリング設定はここまで.
設定したタスクを手動で実行してみる.
(Windows上でのユーザ名/パスワードが,ファイルサーバ上でのユーザ名/パスワードと異なるとコピーが成功しない?)