Robocopy 是 Windows 7 预装的。我过去用过很多次。我尝试使用
robocopy c:\source "\\server\share\path" /s /r:2 /w:2`
结果,我被拒绝了权限。使用资源管理器,我可以将文件复制到此共享。我打开了具有管理员权限的命令提示符,结果相同。该共享对公众是可读/写的。
编辑我已成功将驱动器号映射到共享,但 robocopy 仍然失败
编辑 我添加了 /B 开关,但没有成功。确切的错误是:
2009/09/26 20:43:14 ERROR 5 (0x00000005)
Accessing Destination Directory \\drobo\Drobo\fotos\__NEW\Ericsson\
答案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 首先尝试以可重启模式复制文件(以获得更高的弹性),但如果该操作失败并出现“拒绝访问”错误,它会自动使用备份模式重试复制。
答案2
尝试使用标志复制文件Backup
:
/B:以备份模式复制文件。
答案3
除了之前的答案之外,我还可以扩展对我有用的修复方法。就我而言,我的本地文件夹和文件的所有权由系统上的另一个用户声明。我只是声明了所有文件夹和子文件夹的所有权,一切工作正常,没有备份开关。
声明文件夹及其子文件夹的所有权:http://technet.microsoft.com/en-us/magazine/ff404240.aspx
答案4
对我来说,当我直接在服务器上运行命令时,它工作正常,但当我从 PowerShell 远程运行它时,我会收到此错误。我还试图将文件从本地计算机复制到网络共享。对我来说,解决方法是使用:
Invoke-Command -ComputerName $sourceServer -Credential $credential -Authentication Credssp -ScriptBlock {
& RoboCopy "C:\Source" "\\OtherServer\C$\Destination" /E
}
具体来说,使用-Credential $credential -Authentication Credssp
为我解决了这个问题。
希望这能帮助其他Error 5
在使用 RoboCopy 和 PS Remoting 时遇到问题的人。