パソコンに接続しているストレージを交換する必要があり、ストレージ内のファイルをフォルダ構造を含めた形で別ストレージに移すことになりました。
用意した別ストレージが空の状態であればエクスプローラでコピーすればよいのですが、すでにファイルが存在しているのでファイル名が重複すると「上書きしますか?」と聞いてきます。
ファイルが1つ2つならお付き合いしますが100も200も聞いてこられるとさすがにつらいものがあります。
ファイルが重複した場合は、より新しいファイルが残るようにしたいところですが、その辺の細かな調整はエクスプローラのコピー機能ではなかなか難しいです。
そんな願いをかなえてくれる機能としてWindowsではrobocopy.exeというコマンドプロンプトやpowershellで実行するコマンドがあります。
実はたまにしか使わないコマンドなので実行して思った通りの結果になるか自信がありません。
失敗するとコピーに要した時間が無駄になったり、最悪ファイルをロストする危険があります。
ということで、ファイル数の少ないフォルダでテストしてみたいと思います。
コマンド
robocopy H:\script H:\document /S /E
コピー元(マスターフォルダ):H:\script
コピー先(バックアップフォルダ):H:\documents
実行後:H:\documents
見てもらえればわかりますが、実行後scriptフォルダ下のサブフォルダがdocument下にも出来上がっています。もちろんファイルも同様にコピーされています。
私が気になったのは、「document\script」のようにフォルダが作られてしまうのではと危惧していましたが、そのような振る舞いでなく安心しました。
オプションでファイルのコピー条件を変えることができますが、デフォルトでは以下のようになります。
・コピー先にファイルが存在しない場合コピー
・コピー元の更新日付がコピー先より新しい場合コピー
・コピー元とコピー先のファイルサイズが異なる場合コピー
結果として、存在しないファイルと更新されたファイルのみコピーされますのでトータルのコピー時間は短く済みます。robocopyは対話式のアプリケーションと異なりコマンドですので、タスクスケジューラなどで自動実行させたりしやすい作りになっています。
閑話休題
テストが成功しましたので、これから数時間かけて本番のコピー作業に入りたいと思います。
コメント