【PowerShell】robocopyコマンドを使う方法

PowerShell

この記事では、robocopyコマンドの基本的な使い方から、便利なオプションまで詳しく説明します。

前回の記事:
【PowerShell】xcopyコマンドを使う方法

robocopyとは?

robocopy(Robust File Copyの略)は、Windowsの標準コマンドラインツールの一つで、高度なファイルコピーやフォルダ同期を行うためのツールです。

参考:
Robocopy | Microsoft Learn

robocopyの基本構文

robocopy <source> <destination> [<file>] [<options>]

<source>: コピー元のディレクトリ
<destination>: コピー先のディレクトリ
[<file>]: コピーするファイル名(省略可能)
ワイルドカード文字 (* または ?) がサポートされています。
このパラメーターを指定しない場合は、既定値として *.* が使用されます。
[<options>]: 各種オプション(省略可能)

robocopyは以下のように動作します。

コピー元 コピー先 実行動作
存在する 存在する コピー元でコピー先を上書き
存在する 存在しない コピーする
存在しない 存在する コピー先ファイルを削除する

robocopyの基本的な使い方

単純なコピー

最も基本的な使い方は、ファイルやディレクトリのコピーです。
以下のコマンドは、C:\sourceディレクトリ内の全ファイルとサブディレクトリをD:\destinationにコピーします。

$source = "C:\source"
$destination = "D:\destination"

robocopy $source $destination

ミラーリングコピー

/mirオプションを使用すると、2つのフォルダを完全に同期できます。

$source = "C:\source"
$destination = "D:\destination"
$robocopyOptions = "/mir"

robocopy $source $destination $robocopyOptions

これにより、C:\sourceに存在せず、D:\destinationに存在するファイルやディレクトリが削除され、C:\sourceとD:\destinationは完全に一致する状態になります。

差分コピー

/xoオプションを使用すると、更新されたファイルのみコピーされます。

$source = "C:\source"
$destination = "D:\destination"
$robocopyOptions = "/xo"

robocopy $source $destination $robocopyOptions

これにより、D:\destinationに既に存在し、更新日時がC:\sourceのファイルと同じか新しいファイルはコピーされません。

ログの出力

/logオプションを使用すると、コピー作業のログをファイルに出力します。

$source = "C:\source"
$destination = "D:\destination"
$robocopyOptions = "/log"
$logfile = "C:\temp\logfile.txt"

robocopy $source $destination $robocopyOptions:$logfile

これにより、コピーのログがC:\temp\logfile.txtに出力されます。

ネットワーク越しのコピー

ネットワーク経由でのコピーも可能です。例えば、\\Server\Shareへのコピーは次のように実行します。

$source = "C:\source"
$destination = "\\Server\Share\Destination"

robocopy $source $destination

実践的な使用例

バックアップスクリプト

毎日自動でバックアップを取るスクリプトを作成する場合は、以下のようにします。

# バックアップ元ディレクトリ
$source = "C:\source"

# バックアップ先ディレクトリ
$destination = "D:\Backup"

# ログファイル
$logfile = "C:\Backup\backup_log.txt"

# robocopyコマンドの実行
robocopy $source $destination /mir /log:$logfile /r:3 /w:10

/r:<n> 失敗したコピーの再試行回数を指定します。n の既定値は 1,000,000 (100 万回の再試行) です。
/w:<n> 再試行間の待ち時間 (秒) を指定します。 n の既定値は 30 (30 秒の待ち時間) です。

このスクリプトをタスクスケジューラに登録しておけば、毎日決まった時間にバックアップが実行されます。

大量ファイルの移動

大量のファイルを別のディレクトリに移動する場合もrobocopyが役立ちます。/movオプションを使用すると、コピー後にソースからファイルが削除されます。

$source = "C:\source"
$destination = "D:\destination"
$robocopyOptions = "/mov"

robocopy $source $destination $robocopyOptions

まとめ

今回は、robocopyコマンドの基本的な使い方から、便利なオプションまで詳しく説明しました。

タイトルとURLをコピーしました