【コマンドプロンプト】指定したファイル(フォルダ)を同期して、別フォルダにバックアップを取る。バッチファイル作成【robocopyコマンド】

コマンドプロンプトrobocopyコマンドでフォルダを同期してバックアップを取る

WEBサービスを運営している会社の社員でもある私は、フロントエンドエンジニアの他に経理・総務・人事・庶務、などなど様々なことをやらされている。
もちろん、出来ないより出来た方がよいので、後学の為にと割り切ってやっているのだが…。

普段の作業は、ポータブルHDDを持ち歩き、会社PC、自宅PC、ノートPCでそれぞれの環境で同じデータを利用している。
データ破損時の為にバックアップとして、会社PCのローカルに同期ファイルを都度保存している。

毎回ファイルをコピペするよりも、バッチファイルを作っといて、そのファイルをダブルクリックで簡単に同期を実行するように作業効率化している。

robocopyコマンドでバックアップするバッチファイルを作る

robocopyコマンドで、2つのフォルダの内容を同期させ内容を同じに保つ。
オプションも多数あるが、基本的な使い方は下記。

@echo off
robocopy "コピー元フォルダのパス" "コピー先フォルダのパス" オプション

オプションを付けずに実行することも可能だが、それだとファイルのみが対象となりサブフォルダは含まれないとの事。

robocopy "コピー元フォルダのパス" "コピー先フォルダのパス" /mir /b /xo

robocopyには、さまざまはオプション機能がある為、自身の環境に合わせて設定。

上記では、オプションを3つほど表記していますが、私は自分一人で作業しているフォルダのミラーコピーを取っているので、/mir しか設定していないことが多いです。

/mir オプション

コピー元とコピー先フォルダを同期させる。
増減両方の差分コピーがとれる。

アクセス権に関係なくディレクトリ・ファイルをコピーでき同じ状態にする為、過去コピー元にあったファイルが既になくなった場合、このオプションを設定して実行すると、コピー先のフォルダもファイルが削除される。
差分をとるかとらないかの判別はファイルのタイムスタンプが基準になる。同じであればコピーはスキップされる。

robocopy "コピー元フォルダのパス" "コピー先フォルダのパス" /mir*.pdf

など、オプションの後にアスタリスク+.pdfなどの拡張子をつければ、そのファイルのみをコピーすることができるようだ。

/b オプション

Backup Operators権限でコピー。

複数人で共通フォルダを使っている場合等で、ファイルにアクセス権限などがついていた場合でも関係なくファイルをコピーできる。

/xo オプション

/xo オプションを付けると、古いタイムスタンプはコピーせずスキップし新しいタイムスタンプのファイルのみをコピーする。

/b /xo オプションは、私自身は指定しなくても困らないので、単純に/mirでミラーリングしバックアップを取っています。

あとは、必要に応じて /LOG でログを取っておいてもいいかな…。というくらいでしょうか?あまり必要がないかもしれませんが、いろいろやってみて、今後のさまざまなシチュエーションに対応できるようにしておくのも良いかと…。

 

関連記事Related article

記事月別アーカイブ