スポンサーリンク

【PowerShell】robocopy 高機能バックアップの使い方

記事内に広告が含まれています。

Windows環境で安定したファイルコピー・ディレクトリ同期・バックアップを実現したいなら、PowerShellで使えるrobocopy(Robust File Copy)は選択肢になり得ます。

本記事では、robocopyの基本的な使い方をまとめます。

スポンサーリンク

robocopyの特徴

robocopyはWindowsに標準搭載されており、大量のファイルコピー・差分バックアップ・ミラーリング処理など、業務用途でも利用できる高機能ツールです。

他のコピーコマンドとの違い

機能copy / xcopyrobocopy
サブフォルダ対応一部可能完全対応(空フォルダ含む)
ネットワークコピー弱い強い(中断・再開可能)
ミラー同期不可可能(/MIR)
再試行不可可能(/R, /W)
並列コピー不可可能(/MT)
スポンサーリンク

基本構文と最小限の使用例

robocopy <コピー元> <コピー先> [ファイル指定] [オプション]

例:全ファイル・サブフォルダを含めてコピー

robocopy "C:\Projects" "D:\Backup\Projects" /E

よく使われるrobocopyの主なオプション一覧

オプション意味
/Sサブフォルダをコピー(空フォルダ除く)
/Eサブフォルダすべてコピー(空も含む)
/Z中断再開可能なモード(不安定なネットワークで便利)
/R:nエラー時の再試行回数(既定:100万)
/W:n再試行までの待機秒数(既定:30秒)
/MIRコピー元とコピー先を完全に同期(削除も反映)
/LOG:<ファイル>ログをファイル出力
/MT[:n]マルチスレッドコピー(最大128)
/XXコピー先にしかないファイル・フォルダは削除しない(/MIRと併用)
/XD <dir>除外ディレクトリ指定
/XF <file>除外ファイル指定

使用例 ログ付きでミラー同期するバックアップスクリプト

$source = "C:\Data"
$destination = "E:\Backup\Data"
$log = "C:\Logs\backup_$(Get-Date -Format 'yyyyMMdd_HHmmss').log"

robocopy $source $destination /MIR /Z /R:5 /W:10 /LOG:$log /TEE

このスクリプトは以下のようなことを実現します。

  • /MIR:ミラー同期(コピー元にないものは削除)
  • /Z:中断再開に対応
  • /R:5 /W:10:エラー時に最大5回、10秒おきに再試行
  • /LOG:日時付きログを保存
  • /TEE:ログ出力と同時にコンソールにも表示

用途別実装方法

差分バックアップ(更新されたファイルだけコピー)

robocopy "C:\Source" "D:\Dest" /E /XO

/XO:コピー先より新しいファイルだけコピー

ネットワーク越しにフォルダをバックアップ

robocopy "\\NAS\Share" "C:\LocalBackup\NAS_Share" /MIR /Z

特定ファイルだけを除外してコピー

robocopy "C:\Source" "D:\Dest" /E /XF "*.tmp" "*.log"

空のディレクトリだけを作成(ファイルは除外)

robocopy "C:\Source" "D:\Dest" /CREATE

注意点とトラブル防止策

ミラーコピー時の削除に注意!

/MIRコピー先にあるが、コピー元にないファイルを削除します。

誤操作によるデータ損失に要注意です。

初めて使う場合は、まずは/Lオプションで確認するとよいです。(処理せずに表示だけ)

robocopy "C:\A" "D:\B" /MIR /L

スケジュール実行にはPowerShellスクリプト+タスクスケジューラ

定期バックアップを自動化するには、robocopyを含むPowerShellスクリプトを作成し、Windowsタスクスケジューラに登録するのがおすすめです。

まとめ

項目内容
特徴高速・堅牢・多機能なファイルコピー
利用例差分バックアップ・同期・除外指定・ネットワーク転送
実行環境PowerShellまたはコマンドプロンプト
推奨設定/E /Z /MT /LOGなどの組み合わせ

robocopyは使い方さえマスターすれば、業務レベルのファイル管理を手軽に自動化できるツールです。

バックアップ、ミラーリング、差分コピーなど、さまざまな業務に役立ちます。

スポンサーリンク
スポンサーリンク
PowerShellWindows
著者SNS
タイトルとURLをコピーしました