私の場合は、ソースと宛先の両方の共有を完全に制御することから始めました。問題は、Robocopyがサブディレクトリの再帰を開始する前に、宛先共有のACLをnull値(誰にも権限がない)にリセットしていたことでした。いくつかの簡単なテストの後、私の結論は、Robocopyは継承されたアクセス許可を処理しないということです。C:\ Share1をD:\にコピーしていて、C:\ Share1がC:\ルートディレクトリから権限を継承しているとします。実際には明示的なACLはありません。したがって、そのACLをコピーすると、実際には何もコピーされません。空のACLを宛先にコピーすることにより、コピーの最初のステップで権限が削除され、その後の共有への書き込みはすべてエラー5で失敗します。
これは、継承された権限を使用してアクセスしているソースと、継承された権限を使用せずにアクセスしている宛先からコピーする場合にのみ問題になります。C:\(ACLに明示的に含まれています)をD:\にコピーしても、問題はありません。これが本当に問題である場合は、フルコントロールでソースACLに自分を明示的に追加することで解決できます。コピーが実行されると、ACLエントリが宛先に複製され、後続のファイルコピーを書き込むことができます。コピーが完了した後、(ソースと宛先の両方で)変更を取り消すことができます。
上記にもかかわらず問題が解決しない場合は、バックアップオペレーターとしての権限を使用してファイルのバックアップを試みる/ Bスイッチを試すことを検討してください。これにより、コピー先の共有のACLにアクセスしていない場合など、他の方法では作成できなかったファイルをコピーできます。Robocopyはデフォルトで再起動可能なコピーを試みます。再起動可能なコピーを放棄することによる最悪のケースは、中断の場合に現在転送中のファイルを失うことです。次のパスでは、途中からではなく、最初からファイルを再起動します。
お役に立てば幸いです。/ Bスイッチに関するMicrosoftのRobocopyドキュメントからの引用は次のとおりです。
見積もり:
NTFSセキュリティ情報(ACL)をファイルデータと共にコピーすると、読み取りアクセス権はあるが書き込みアクセス権がないファイルをコピーすることができます。そのようなファイルが1回コピーされ、ACLが適用された後、ファイルを再度コピーしようとすると、「アクセス拒否」エラーが発生する場合があります。この状況では、/ Bまたは/ ZBスイッチを使用して、バックアップモードでファイルをコピーする必要があります。
/ Bは、すべてのファイルをバックアップセマンティクスでバックアップします(バックアップモード)。/ ZBは最初に(回復力を高めるために)再起動可能なモードでファイルをコピーしようとしますが、「アクセス拒否」エラーで失敗した場合は、バックアップモードを使用して自動的にコピーを再試行します。