Help us understand the problem. What is going on with this article?

robocopyコマンドでwindows端末のデータをバックアップする方法

More than 3 years have passed since last update.

はじめに

仕事柄、Windows端末のデータをバックアップすることがよくあるのだけど、今まではコマンドプロンプトでxcopyコマンドを使い、データのコピーを取っていました。

例えばCドライブにある自分のデスクトップ上のファイルを、全て別のドライブにバックアップしておきたいときなどは、xcopyコマンドでディレクトリごとコピーができます。

xcopy.bat
xcopy C:\Users\himrox\Desktop E:\Backup /E /C /H

オプションなど詳しくは http://www.k-tanaka.net/cmd/xcopy.php を見てください。

しかし、xcopyには致命的な欠点があって、コピー元のファイルの中に255バイトを超えるパスがあると、「メモリが足りません」とエラーが出てコピーできないというのだ。

xcopyで「メモリが足りません」

なにかxcopyに替わるいい方法はないかと探していたところ、robocopyコマンドが使えそうだとわかってきました。

robocopyコマンドの使い方

robocopyコマンドの基本的な使い方はシンプルで、以下のようなコマンドでディレクトリごとコピーがされます。

robpcopy.bat
robocopy (コピー元のディレクトリ) (コピー先のディレクトリ) (オプション)

robocopyで先程xcopyで実行したコマンドを書き直すと、こんな感じです。

robpcopy.bat
robocopy C:\Users\himrox\Desktop E:\Backup /E /R:0 /W:0 /XJD /XJF /LOG:backup.log

robocopyコマンドは、xcopyと違い、パスのサイズに制限はなく、詳細なログも出力されます!
また、robocopy /? でコマンドの使い方を知ることができます。

主に使うオプションを詳しく見ていきたいと思います。

robocopyコマンドのオプション

コピーオプション

  • /S サブディレクトリをコピーしますが、空のディレクトリはコピーしません。
  • /E 空のディレクトリを含むサブディレクトリをコピーします。
  • /MIR ディレクトリ ツリーをミラー化します。

/Sや/Eのオプションでは、コピー元のファイルを削除してから、もう一度実行してもコピー先のファイルは残ります。
それに対して/MIRオプションでは、コピー元で削除されたデータはコピー先でも削除されるので、注意が必要です。

再試行オプション

  • /R:n 失敗したコピーに対する再試行数: 既定値は 1,000,000。
  • /W:n 再試行と再試行の間の待機時間: 既定値は、30 秒です。

このあたりはやたら規定値が大きく設定されているので、特に理由がなければ/R:0と/W:0をオプションに指定しておいたほうがよいでしょう。

ファイル選択オプション

  • /XJD フォルダの接合ポイントを除外します。
  • /XJF ファイルの接合ポイントを除外します。

ジャンクションという特殊ファイルをコピー対象から外します。こちらも特に理由がなければ指定しておきます。

ログオプション

  • /LOG:ファイル ログファイルに状態を出力します (既存のログを上書きします)。
  • /LOG+:ファイル ログファイルに状態を出力します (既存のログ ファイルに追加します)。

ログファイルの出力先を設定できます。ログはコマンドプロンプトにも表示されますが、定期的にバックアップを取るときなどは、ログファイルに出力しておくといいでしょう。

この他にも様々なオプションがありますが、よく使うオプションはこんなところです。

参考

Windowsのrobocopyコマンドでフォルダーをバックアップ/同期させる
パソコンのファイルをrobocopyで手堅くバックアップする方法

himrox
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away