はいはいサテライト

プログラミング、ピアノ、読書

Robocopyでユーザフォルダをバックアップ

ついついサボりがちになってしまうバックアップ。

方法1
バックアップソフトを使う。
問題:
使い方を覚えるのが面倒。あと、イメージバックアップだとバックアップソフトがないと復元できないので不便
macから外付HDDのデータを参照したいときなど)


方法2
目的のフォルダを選択してバックアップ先にドラック&ドロップ。
問題:
バックアップが終わるまでエクスプローラウィンドウが開きっぱなしウザい。
時間がかかる。


バックアップのやり方としては上の2パターンが多いと思うのですが、windows標準コマンドのrobocopyを使うと簡単かつ高速にバックアップ可能です。

Robocopyの基本
コマンドプロンプトを立ち上げる(「ファイル名を指定して実行」に「cmd」と入力して「OK」)
② 以下のコマンドを入力して実行するだけ

robocopy 転送元 転送先 /MIR

転送元、転送先はパスで指定します。
/MIRをつけることで転送元と転送先がミラーリングされます。
つまり転送元から削除されたファイルやフォルダは転送先からも削除されます。
たとえば、マイドキュメントを外付HDD(E:とする)にバックアップしたければ

robocopy C:\Users\(ユーザ名)\Documents E:\Documents /MIR       ※Windows8の場合


となります。
転送元と転送先の順番を間違えないように注意。

ユーザーフォルダを丸ごとバックアップ

たとえば下記コードを実行するとユーザーフォルダ(マイドキュメント、ミュージックなど)のバックアップができる。

robocopy "C:\Users\(ユーザー名)" "E:\(ユーザー名)" /MIR /R:0 /NFL /NP /XF ntuser.dat ntuser.dat.log1 ntuser.dat.log2 /XD "AppData" "Application Data" /LOG+:C:\Users\(ユーザー名)\Desktop\BackUp.log

/R:0

Robocopyは何らかの理由(通信エラー、プロセス使用中など)によりバックアップに失敗した場合、再試行してくれます。
デフォルトだと100万回(!)

いちいち止まると面倒なので再試行回数を0に設定。
エラーは飛ばしてバックアップできるものだけを処理します。

/NFL

任意。ファイル名をログに記録しない。
/NP
コピーの完了率をログに記録しない。これも任意。

/XF ファイル名

指定したファイルをコピーから除外。
プロセス使用中のエラーを回避するために下記ファイルを除外。
ntuser.dat
ntuser.dat.log1
ntuser.dat.log2

/XD フォルダ名

記載のフォルダを除外します
エラーを回避するため下記フォルダを除外。
AppData
Application Data

バッチファイルにしておけばワンクリックでバックアップ完了。
前回のバックアップから変更のあるファイルやフォルダのみコピーするので処理も高速です。