見出し画像

【ROBOCOPY】実はめちゃくちゃ簡単!大容量データのバックアップ方法【Windows】


コマンドプロンプト

Windowsにはコマンドプロンプトという黒くてとっつきにくいツールがあります。これがなんのために存在するのかわからない人が多いと思いますが、知っているととても便利なものなのです。

help

「Win + r」キーを押して、「ファイル名を指定して実行」ダイアログボックスに「cmd」を入力してコマンドプロンプトを起動します。まず、helpと入力すると実行できるコマンド一覧と内容がドバッと表示されますが、今回はその中にある「ROBOCOPY」という堅牢性の高いファイルコピー方法を紹介したいと思います。

ROBOCOPY

「robocopy /?」と入力すると大量の説明文が表示されて画面を閉じたくなったかもしれませんが全てを覚える必要はありません。

robocopy コピー元 コピー先 /MIR

今回覚えるのはたったこれだけです。
robocopy:コマンド名
コピー元:コピー元ディレクトリ(C:\Users\*UserName\Pictures など)
コピー先:コピー先ディレクトリ(D:\backup など)
/MIR:ディレクトリ ツリーをミラー化
*UserNameはユーザーアカウント名

robocopy C:\Users\*UserName\Pictures E:\backup /MIR

「/MIR」はミラーリングという機能でコピー元のデータをコピー先に反映し同一にしてくれます。初回以外は差分のみを反映するため、通常のコピー&ペーストよりも短時間で処理が終わります。

ただし、一点気をつけなければいけないのがコピー先にコピー元と異なるデータが存在する場合はそれらは全て消えます。ゴミ箱にも入らないため元に戻すことはできません。

定期的に同じ作業を繰り返したい場合は、これらをバッチファイル(*.bat)にすることで複数のコマンドを順次実行することが可能になります。また、タスクスケジューラに登録すれば自動で実行することができます。

エラーが発生する原因

これだけで簡単に大容量データのバックアップを取ることが可能になりましたが、実はいくつか問題があります。
※システムや常駐しているアプリケーションのデータは除く

  1. 半角スペースが含まれてる

  2. 英数字記号以外(日本語など)の文字が含まれている

半角スペースが含まれてる場合

コピー元またはコピー先が「C:\Users\UserName\Documents\Outlook File」のように半角スペースが含まれている場合は""(ダブルクォーテーション)で囲む必要があります。例:「"C:\Users\UserName\Documents\Outlook File"」

英数字記号以外(日本語など)の文字が含まれている場合

Shift-JIS

コピー元またはコピー先が「"C:\Users\UserName\Documents\Outlook ファイル"」のように日本語が含まれているものをバッチファイルから実行する場合にはバッチファイルをShift-JISにする必要があります。

chcp 932

これはコマンドプロンプトのデフォルトがShift-JISに設定されているため、それ以外の日本語では文字化けするからです。chcpと実行すると「現在のコード ページ:932」表示されることからも「932 shift_jis ANSI/OEM 日本語;日本語 (Shift-JIS)」であることがわかります。

アプリケーション起動中

Outlook起動中

また、Outlookを起動している状態で「Outlook ファイル」のコピーを行うと、アプリケーションが使用中のためできません。その場合は、tasklistでアプリケーションが起動中なのか確認する処理などを追加すると良いと思います。

tasklist | findstr "OUTLOOK.exe"

コマンドプロンプトのコード ページ ナンバー変更

chcp 65001

「chcp 65001」とすることでUnicode (UTF-8)に変更することが可能です。
ただしこのやり方では次にコマンドプロンプトを起動すると「コード ページ:932」は日本語 (Shift-JIS)に戻ってしまいます。

恒久的にUnicode (UTF-8)にしたい場合

[✓]ベータ:ワールドワイド言語サポートでUnicode UTF-8を使用にチェックを入れる

「設定」-「時刻と言語」-「言語と地域」- 関連設定「管理用の言語の設定」
「地域」-「管理」- Unicode対応でないプログラムの現在の言語:「システム ロケールの変更」
「地域の設定」 - 現在のシステムロケール
[✓]ベータ:ワールドワイド言語サポートでUnicode UTF-8を使用
※コマンドプロンプトのhelpなど日本語表示されていた説明文は全て英語になります。PowerShellは日本語で表示されますが崩れます。

この記事が気に入ったらサポートをしてみませんか?