Robocopyでコピー先のフォルダが非表示になる状態 (解決方法)

記事タイトルとURLをコピーする

こんにちは!イーゴリです。

Robocopyでドライブごとにデータ移行を行う時に、フォルダのコピー処理は完了しましたが、コピー先のフォルダが見えない状態となっている場合、どうすればよいかと疑問に思う方は是非最後まで読んでください。

イメージ図

コマンドの例:robocopy "\\fromservername.test.local\D$" "\\toservername.test.local\d$\フォルダ" /copy:必要なRobocopyオプション

直接にパスを叩いてみると、フォルダの中身が表示されますが、エクスプローラ上でフォルダ自体が見えません。

理由

NTFSの仕様上、ドライブのルートディレクトリには、「隠し属性」と「システム属性」が付いています!

Robocopyは上記のパラメーターを忠実にコピー先に移行しているので、コピー先のフォルダが隠しフォルダ&システムフォルダになってしまい、エクスプローラのデフォルト設定では、非表示になってしまいます。

この動作はRobocopy/NTFSの仕様なので、正常な動作です。

コピー元がネットワークドライブ(NTFSのルートフォルダの場合)の場合でも同じ事象が発生します。
ネットワークドライブの例: \servername\sharename

隠しフォルダを見る方法 (任意→必要な場合のみ)

フォルダの下記設定を行います。

コピー先のフォルダを通常のフォルダに変更する方法

隠し属性・システム属性を削除し、通常のフォルダにするには、robocopyコマンドの処理後、attribコマンドを実行致します。

attrib -s -h "<移行先の対象フォルダパス>"

注意点

データをドライブごとに移行する際、System Volume Information及び$RECYCLE.BINも移行されてしまいます。これは場合によって(ほとんどの場合)は危ない行為ですので、下記の例のようにRobocopyコマンドで両方のフォルダを除外します。

コマンドの例:

robocopy "\\fromservername.test.local\D$" "\\toservername.test.local\d$\フォルダ1" /copy:必要なRobocopyオプション指定 /XD "System Volume Information" /XD "$RECYCLE.BIN"

ログ出力のオプションを指定した場合、下記のように確認できます。

なお、タスクスケジューラーの実行の代わりに直接にPowerShellなどでRobocopyコマンドを実行する場合、同上の確認仕方となっております。

以上、御一読ありがとうございました。

イーゴリ (記事一覧)

クラウドインテグレーション部・エンジニア

特にTerraform(自動化)、ネットワーク系、DNS、VDI、Windows Serverに興味があります

日本国内旅行・ドライブが好きです