2012/08/16

Windows 7の標準機能『robocopy』を使って、定期的に自動実行するタスクでフォルダをNASに同期させるよ!( `・ω・´)

ファイルやフォルダを同期させるソフトはいろいろあるのですが、
「シンプルな同期設定」や「簡単なスケジューリング」を出来るものがなく悩んでおりました・・・。

今回、Windows Vistaや7以降で標準機能に組み込まれた『robocopy』を用いた
『定期的に自動実行するタスクスケジュールで、確実・高速にフォルダをNASに同期』させます。

これにより、以下のウマーを達成します( `・ω・´)ワッフーw
  • データのミラーリングにより、データを失う危険性を減らす
  • NASのDLNA機能を使って、家庭内のPS3やテレビなどDLNA対応機器から再生可能にする

まずは、シンプルに同期させる方法を確認するよw


robocopyはコマンドラインで実行するプログラムです。コマンドプロンプトやバッチファイルを使って実行します。

例として、『「D:\MUSIC」フォルダを、「N:\MUSIC」フォルダに同期させる』というシチュエーションだとすると以下のようにメモ帳で書いて、『test.bat』などのバッチファイルに保存して実行すれば出来ます。
robocopy D:\MUSIC N:\MUSIC /MIR
シンプルですね(*´д`*)

NASに同期させる場合のひと工夫などww


上記のままだと、FAT形式でフォーマットされたNASに同期させた時に、毎回コピー処理が動作してうまく同期されなかったりします。

そういったNAS問題を解決して、さらに『同期の高速化』や『ログ記録を残す』なども実現させて
『「D:\MUSIC」フォルダを、「\\LANDISK\MUSIC」フォルダに同期させる』を行う場合、以下のように書くと良いです。
robocopy D:\MUSIC \\LANDISK\MUSIC /MIR /FFT /MT /XA:sh /LOG:C:\MirrorLog\MUSIC.txt

コマンドラインオプションを順番に説明すると、以下のような意味になりますヽ(・ω・)ノ
 /FFT   : ファイルのタイムスタンプ精度を、FATフォーマット用の2秒精度で扱うよ
 /XA:sh : システムファイルと隠しファイルは、同期時にコピーしないでね
 /MT    : マルチスレッド実行して、同期処理を高速化させてね
 /LOG:  : 指定したファイルに、同期処理のログを残してね(上記例だと『C:\MirrorLog\MUSIC.txt』)

『同期処理のログを、日付付きのファイル名で毎回残す』という場合は、以下のようなログファイル名を指定すると幸せになれますw
robocopy D:\MUSIC \\LANDISK\MUSIC /MIR /FFT /MT /XA:sh /LOG:C:\MirrorLog\MUSIC-%date:~-10,4%%date:~-5,2%%date:~-2,2%.txt
フォルダパスをご自身の環境で適宜読み替えてバッチファイルに保存したら、次節でタスク登録しましょう☆

タスク登録して定期自動実行させるよwww

スタートメニューで[すべてのプログラム]-[アクセサリ]-[システムツール]と進み、『タスク スケジューラ』を起動します。
右端の「操作」一覧から、『基本タスクの作成...』をクリックします。

タスク名を適当に設定します。他のタスクと区別しやすい名前の方が良いですww

フォルダの同期処理をどのぐらいの頻度で実行させるかを設定します。
今回の例では、「毎週月曜日の0時0分に自動実行させる」設定にしてみました( `・ω・´)

初期値の『プログラムの開始』を選んだ状態で、『次へ』をクリック。

前節の「robocopyによるフォルダ同期処理を書いたバッチファイル」を、『プログラム/スクリプト』の欄に設定します。

完了』を押せば設定完了です!ヾ(゚ω゚)ノ゛ヤッフー

『試しに手動で実行してやんよ!o(`ω´*)o』という場合は、
上図のように一覧でタスクを選択して「操作」欄で『実行』をクリックすれば実行出来ます。ちゃんと動くか確かめましょう( ・`д・´)

参考文献


今回も多くの記事を参考にさせて頂きました。この場をお借りしてお礼申し上げますm(_ _)m

※2014/05/05: オプションの記述に不足があったのを修正しました。

4 件のコメント:

Cinnamon さんのコメント...

忘れないうちにpostしとこ

■SkyDrive用フォルダーを<送る>に登録する
http://news.mynavi.jp/column/windows/187/index.html
↑も併用すれば、NASとクラウドでミラーリングできるから向かうところ敵なし?笑

ケモケモ さんのコメント...

うぉwwww SkyDriveと同期とか出来るのかΣ(・ε・;)
ありがとう、活用させて頂くよんヾ(゚ω゚)ノ゛

匿名 さんのコメント...

非常に参考になりました。
可能であれば、教えていただけるとありがたいのですが、
NASに書き込まれたデータ(ファイル)を本体PCに作られた曜日ごとのホルダ-にコピーしていくというプログラムは作れないでしょうか?

ケモケモ さんのコメント...

すみません、返信がずいぶん遅れちゃいました。

まずは日付のフォルダを作成する方法です。「D:\backup」に「20150822」というフォルダを作ります。
 pushd "D:\backup"
 set dirname=%date:~0,4%%date:~5,2%%date:~8,2%
 mkdir %dirname%

この日付フォルダをコピー先に指定して
 robocopy (コピー元: NASのフォルダ) (コピー先: D:\backup\%dirname%) (いろいろオプション)
という感じにすると良さそうですね!(`・ω・´)b