Entries

Win 2003 Server から Buffalo の NAS に定期バックアップを取る際の注意

Windows 2003 Server から BuffaloのNASに定期バックアップを取る
タスクの作成と発生した問題点、ならびにその解決策。
(2010.12.8)


職場にあるWin2003サーバのデータを定期的にバックアップする必要が
生じたために、まずはシンプルな形での実現を目指して環境の設定を行ってみました。
具体的には、サーバの内蔵HDのデータを、Buffalo の NAS(TS-H2.0TGL/R5)に
コピーする作業です。コマンドは robocopy を使います。xcopy には
もう引退していただくことにしましょう...

TS-H2.0TGL/R5 は最近生産を終了したはずです。
もう古いってことか...。この記事は最新機種を弄っている方には
向かないのかもしれませんね。Win2003... って事自体(ry

今まではデータ量が少なくデータの更新頻度が低かったので
1日おき位に手動で行っていたのですが、さすがに面倒になって参りやした。

初め、なかなか思った通りに動いてくれませんでしたので、
問題解決までのプロセスを備忘録として書き留めます。
初めて定期バックアップの環境構築を経験される方には
参考になる部分があると思います。
内容そのものは超初心者向け(運用管理者が見たら笑ってしまうようなレベル)なので、
これをベースにより良いものを作っていただければ幸いです。
とにかく今すぐに何とかしたい方には使える情報だと思います。


1. バッチファイルの作成

バッチファイルはこんな形で作ってみました。

SET DT=%date%
SET FNAME=¥¥Ts-htglc08¥share¥H22_Backup¥%DT:~0,4%%DT:~5,2%%DT:~8,2%
SET LOGFILE=D:¥backup_log¥backup_robo_%DT:~0,4%%DT:~5,2%%DT:~8,2%.log
mkdir %FNAME%
C:¥Progra~1¥Wi8de7~1¥Tools¥robocopy e:¥H22_DATA %FNAME% /E /LOG:%LOGFILE% /FFT
end

(解説)

まず、全体としてフルパスで指定します。相対パス指定はしていません。
相対パスでも動くはずなのですが、うまくいかないことがあり絶対パスに
統一しました。


では1行目から。

SET DT=%date%

環境変数"date"の値を取り出します。

SET FNAME=¥¥Ts-htglc08¥share¥H22_Backup¥%DT:~0,4%%DT:~5,2%%DT:~8,2%

当日の日付でフォルダを作成するための準備をします。
たとえば、今日が12月10日だとしたら、

¥¥Ts-htglc08¥share¥H22_Backup¥20101210

という文字列が作成されます。

初め、NASの共有ドライブにネットワークドライブ名を振っていたのですが、
(Nドライブにしていました)この設定だとなぜか動いてくれませんでした。
結果、¥¥サーバー¥共有¥パス の形で指定したら動きました。

SET LOGFILE=D:¥backup_log¥backup_robo_%DT:~0,4%%DT:~5,2%%DT:~8,2%.log

ログファイル名を作っておきます。

mkdir %FNAME%

¥¥Ts-htglc08¥share¥H22_Backup の下に 20101210 というフォルダを新規で作成します。

C:¥Progra~1¥Wi8de7~1¥Tools¥robocopy e:¥H22_DATA %FNAME% /E /LOG:%LOGFILE% /FFT

robocopy を使って 指定したフォルダに全データをコピーします。

(1) C:¥Progra~1¥Wi8de7~1¥Tools¥robocopy  について
  職場で使用している2003 serverには、robocopy が入っていなかったので、Microsoftの
  サイトからダウンロードしてインストールしました。導かれるがままにインストールすると
  C:¥Program Files¥Windows Resource Kits¥Tools の下に入ります。
  この場所が曲者だったわけで...
  このパスをバッチファイルにそのまま書くとバッチは動きません。
  理由は、"Program Files" の途中にブランクが入るからです。
  バッチは、c:¥program というファイルを動かそうと解釈します。
  それを避けるために、
  コマンドプロンプトから
  dir /x
  を使って、フォルダ名がブランクなしで8文字に収まる表現を求め、それを指定します。
  そのために Progra~1 とか、Wi8de7~1 といった見慣れない文字列を
  指定しているわけです。

  robocopy のパラメタとして、/E は必要だと思います。
  空のディレクトリを含むサブディレクトリをコピーするモードです。
  それから困ったのは、内蔵HD間ではなく、「NASへのコピーが」なかなかうまくいかない
  ということです。これを解決するために、 /FFT というオプションを指定しました。
  
  コマンドのヘルプを見ると、「FAT ファイル時間 (2 秒の粒度) を仮定します。」
  と書かれています。眠っているNASを起こすまでの間に生じるタイムラグ問題を
  解決するためのオプション、といった感じで認識していますが、
  おそらくタイムスタンプがらみの問題を解決するオプションだと思います。
  詳細の調査はそのうち..........zzz。(やばっ、眠りかけました。)

end

一応、入れておきます。


...とまあ、こんな感じです。


2. タスクリストの設定

  「1日おきに、午前2時にバックアップをとる」ことを実現するためには
  タスクマネージャ(2003 server の場合は、"タスク") を使用します。

  Win2003 serverの場合は、
  スタート -> すべてのプログラム(P) -> アクセサリ -> システムツール -> タスク
  で起動します。

  画面が表示されたら、後は簡単に設定できますが、この設定も初めはうまくいかずに
  悩みました。以下の画面のような設定をすることによって確実に動作していますので
  ご参考までに。

  作ったバッチを直接設定するわけではなく、cmd.exe のパラメタとして指定しています。
  この形の設定で動いています。これがベストな指定方法かどうかは自信がありません。

  cmd.exe であれば、画面のリストから「コマンドプロンプト」を直接選択できますので、
  あとはパラメタとして作ったバッチファイル名を /c の後に、フルパスで指定します。

タスク画面


 メモしておくべきは以下の項目かな、と。

 (1)バッチファイル内はフルパスで指定した。
 (2)日付のフォルダを作成する方法。
 (3)robocopy のインストールと実行時パラメタの調査(特に /E と /FFT)。
 (4)ブランクの入っているフォルダ名をブランクなしの8文字名称にする方法。
 (5)NASにドライブ名を振らずに共有名で指定する。
 (6)定期実行環境の(タスク)の設定。
 (7)...などなど

 昔関わったネタもいくつかありますが、あらためて色々と勉強になりました。

 もちろん、これで終わりな訳ではなく、robocopy が高く評価されて言える所以
 とも言える差分バックアップ機能の実行に次はチャレンジしてみます。
 ただ単にコマンドオプションを探すだけのことだと思いますので、
 チャレンジってほどぢゃないか...。




スポンサーサイト
この記事に対してトラックバックを送信する(FC2ブログユーザー)
http://tadpolizemedia.blog118.fc2.com/tb.php/87-fb8901cf

0件のトラックバック

0件のコメント

コメントの投稿

投稿フォーム
投稿した内容は管理者にだけ閲覧出来ます

Appendix

プロフィール

 二代目松四郎

Author: 二代目松四郎


「カメラと動画(+スチル写真)」
「音響と音楽」
「プログラミング」
を主なテーマに活動しています。
映画館と美術館と音楽ホールと
古い街並みが私の学校。

宮城県仙台市在住。

カテゴリー

ブログ内検索

ブロとも申請フォーム

この人とブロともになる

Counter