Robocopyでフォルダを差分同期した話

差分同期って言われてもイマイチ何のことかわからない人もいると思うので最初に簡単に説明します.

差分同期というのは,例えばフォルダAとフォルダBがあるとして,フォルダBをフォルダAと全く同じ内容にする(=同期)時に差分だけを参照して必要最小限の作業で同期する同期方式です.

差分だけ参照すれば,当たり前ですが同期するのにかかる時間が最小限で済むというメリットがあります.特にデメリットが存在するわけでもないです.

で,今回はインストールとか何も必要なく,Windows標準の機能であるRobocopyを使って特定のフォルダ間で差分同期させる方法について紹介します.

自分のメインPCのファイルを定期的にバックアップしておきたいとか,スマホとかにデータを自動で渡すような仕組みを作りたいとか...割と用途はあると思います.

Robocopyのスクリプト

適当に「FolderSync.bat」みたいな名前のファイルを作ってこう記述します.

robocopy [同期元フォルダのパス] [同期先のフォルダのパス] /s /e /mir /r:3 /log+:log.txt /np

はい,こんだけです.細かいオプションの説明は割愛しますが,

・サブディレクトリ(空のディレクトリも含む)も同期
・log.txtにコピー結果を記録

というのをオプションで出来るようにしています.

細かい話

ちなみに,フォルダのパスについてですが,ネットワークドライブやUSBメモリ等も対象にできます.sambaのサーバ,USBにバックアップとか,スマホにデータを送り付けるみたいなこともできます.

タスクスケジューラでの自動実行について躓いたことがあったんで適当に書いときますが,このスクリプトはログファイルを生み出す都合上でちゃんとカレントディレクトリを設定しないといけません.

この図の開始(オプション)のところにプログラムの実行場所(logファイルを吐き出したい場所)を指定すれば大丈夫です.

他,これはちゃんと把握しきってないんですけど,ネットワークドライブをフォルダで指定する時\\192.168.100.Xみたいな形式で指定したらアクセスエラーで0x10が返されました(多分フォルダにアクセスする権限がない的な奴).Windows共有フォルダ(ネットワークドライブをWindowsに割り当てさせる奴)で割り当てしているドライブを指定したら解決しました.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

前の記事

Bandori_Downloader v1.12

次の記事

Bandori_Downloader v1.13