以管理员身份使用 robocopy 时出现访问被拒绝错误

以管理员身份使用 robocopy 时出现访问被拒绝错误

可能重复:
Robocopy 权限被拒绝

尝试运行以下命令时

robocopy d:\directory \\server\directory /S /XO /COPY:DT

我收到拒绝访问错误。我正在运行 Vista Ultimate x64,具有管理员权限,我是两个目录的所有者。

我看到了这个问题并认为它是相似的,但我收到以下错误消息:

ERROR 5 (0x00000005)(Copying file d:\blah....)

有办法解决这个问题吗?如果没有,有没有办法跳过错误的文件并继续处理下一个文件?

答案1

引自这里

就我而言,我一开始就完全控制源共享和目标共享。问题是 Robocopy 在开始递归子目录之前将目标共享上的 ACL 重置为空值(没有人有权限)。经过一些快速测试后,我的结论是 Robocopy 不处理继承的权限。假设您正在将 C:\Share1 复制到 D:\,并且 C:\Share1 正在从 C:\ 根目录继承其权限,它实际上没有明确的 ACL。因此,当您复制其 ACL 时,您实际上是在复制...什么都没有。通过将空 ACL 复制到目标,您的权限在复制的第一步中被删除,并且对共享的所有后续写入都会失败并出现错误 5。

仅当您从使用继承权限访问的源和不具有继承权限访问的目标进行复制时,这才会成为问题。如果您将 C:\(其 ACL 中明确包含您)复制到 D:\,则不会出现问题。如果这确实是您的问题,您可以通过将自己明确添加到具有完全控制权的源 ACL 中来解决此问题。复制运行时,您的 ACL 条目将复制到目标,并且可以写入后续文件副本。复制完成后,您可以撤消更改(在源和目标上)。

如果尽管采取了上述措施,您仍然遇到问题,您可能需要考虑尝试 /B 开关,该开关会尝试使用您作为备份操作员的权限备份文件。这将允许您复制您原本无法复制的文件,例如,如果您不在目标共享的 ACL 上。Robocopy 默认尝试可重新启动的副本。通过放弃可重新启动的副本,最坏的情况是,如果发生中断,您将丢失当前正在传输的文件。下一次传递将从头开始重新启动该文件,而不是从中途重新启动。

希望对您有所帮助。以下是 Microsoft Robocopy 文档中有关 /B 开关的引文:

引用:

如果您将 NTFS 安全信息 (ACL) 与文件数据一起复制,则可能会复制您具有读取权限但没有写入权限的文件。 复制此类文件一次并应用 ACL 后,您可能会发现再次尝试复制文件时会出现“访问被拒绝”错误。 在这种情况下,您应该使用 /B 或 /ZB 开关在备份模式下复制文件。

/B 使用备份语义复制所有文件(备份模式)。/ZB 首先尝试以可重启模式复制文件(以获得更高的弹性),但如果该操作失败并出现“拒绝访问”错误,它会自动使用备份模式重试复制。

相关内容