• 締切済み

robocopyで意図しないフォルダをスキャン

マイドキュメントのバックアップを取るため、robocopyのバッチファイルを作成し、ファイル名をbackupにしてダブルクリックして実行したのですが、意図しないフォルダ(C:\Users\(ユーザー名)\Documents\My Music\)をスキャンしてしまい、そこでアクセスが拒否され、そこから進みません。 どのようにすれば、マイドキュメント以下にあるフォルダすべてをバックアップできるのでしょうか? ※ちなみに/R:0を使用すればアクセスが拒否されたフォルダをスキップしてバックアップできることは分かったのですが、意図しないフォルダをスキャンしているのが、なんとも気持ち悪いため、別の方法でお願いします。 ■backup.batの中身 robocopy "C:\Users\(ユーザー名)\Documents" "E:\ドキュメントのバックアップ" /MIR ■実行後のエラー 2013/03/14 23:05:17 エラー 5 (0x00000005) コピー元ディレクトリをスキャンしていま す C:\Users\(ユーザー名)\Documents\My Music\ アクセスが拒否されました。

みんなの回答

  • kteds
  • ベストアンサー率42% (1882/4440)
回答No.1

robocopyの問題ではなくて、基本的な確認ですが・・・。 そもそも C:\Users\(ユーザー名)\Documents は普通の方法でコピーできているのですか? 普通の方法とは、フォルダ丸ごとコピーする、たとえば xcopy で試してみてください。 xcopyでもアクセス許可エラーが発生するようでは基本的な対応が必要です。 robocopyの前処理として\Documentsフォルダ内の 全てのフォルダやファイル(robocopyで除外する指定をしたフォルダやファイルを除いて)にアクセス許可を付与しておく必要があります。 アクセス許可が無ければcopy、xcopyでもコピーできません。 --- batファイルの前に takeown コマンド icacls コマンド を使ってアクセス許可を付与するscriptを追加する必要があります。 ただし、処理後にアクセス許可を元に戻す配慮が必要ならば、 該当フォルダ、ファイル名を一時保存するなどの対応が必要です。

wegonius
質問者

お礼

検索した結果、互換を保つためのフォルダ(ファイル?)はジャンクションというもので、これらを/XDで除外すれば正常にコピーできました。ありがとうございました。 ※以下の内容でドキュメントのコピーができます。 robocopy "C:\Users\(ユーザー名)\Documents" "E:\ドキュメントのバックアップ" /MIR /XD "My Pictures" "My Music" "My Videos"

wegonius
質問者

補足

/R:0を使用して、エラー時のリトライ回数を0にすると正常にコピーされますので、余計なフォルダがスキャンされなければ問題ないようです。 C:\Users\(ユーザー名)\Documents\My Music\ ←ですが 、XPとの互換を保つためのフォルダのようです。そのため特殊なフォルダのようで…。 こういった特殊なフォルダをスキャンの対象から除外する方法があればいいのですが。

関連するQ&A