Robocopy 错误 50 访问目标目录(不支持请求)

Robocopy 错误 50 访问目标目录(不支持请求)

我设置了一个每天运行的 robocopy 脚本,将数据从 Windows Server 2016 存储服务器上的特定文件夹同步到 QNAP NAS 上的 SMB 共享。Windows Server 经过域身份验证,而 QNAP 使用独立用户登录。在脚本中,服务器使用net use正确的凭据映射 QNAP 共享,而不是尝试假设或在计划任务用户下运行。

net use \\QNAP\share /USER:<user> "<password>"

我已经确认服务器在像这样映射时可以读取/写入共享。

在设置通过任务调度程序自动运行之前,手动运行第一次同步以确认脚本/参数良好,日志中的几个目录(各种不同位置)报告了以下错误。下面是一个示例错误,路径已修改。

2018/01/12 06:38:16 ERROR 50 (0x00000032) Accessing Destination
Directory \\QNAP\share\example folder\something The request is not supported.

每次运行 robocopy 时,相同的文件夹都会发生这种情况。如果我使用 Windows 资源管理器手动将引发错误 50 的任何文件夹复制到目标,它们会正常复制,但即使这样做了,错误 50 仍会记录在相同的位置。错误似乎发生在文件夹级别,而不是特定文件。

我正在使用以下 robocopy 参数。

robocopy D:\local\folder \\QNAP\share\example folder /e /zb /fft /DCOPY:DA /COPY:DAT /r:0 /w:0 /XJ /XD RECYCLER .TemporaryItems /XF Thumbs.db ~* ._* *.inf .DS_Store /log+:D:\backuplog.txt /NFL /NDL

我正在努力从 robocopy 的角度查找有关错误 50 的任何信息。看起来错误 50 与 SMB 有关。这似乎与这些特定文件夹的属性或属性无法写入 QNAP 目录有关。我尝试从交换机中删除“A”(属性)/COPY,但这没有帮助。

答案1

我设法找到了问题所在。它似乎与 QNAP 共享无法处理这些文件夹的某些安全文件夹属性有关。默认情况下,COPYDCOPY值为:

/COPY:DAT /DCOPY:DA

我认为该/E标志默认设置了这些。

属性确实看起来是一个问题,但除此之外,DCOPY参数也需要调整。

/COPY:DT /DCOPY:T

这样就修复了 robocopy 错误 50,以前出现错误的文件夹现在可以与其中的文件一起正确写入目标。

奇怪的是,这种情况只出现在相对较新的文件夹中,但它似乎与属性/特性有关。我们有混合的 Windows/macOS 客户端写入源,因此很可能是这些目录背后的特定 macOS 元数据导致 robocopy 失败。

答案2

如果您需要从任务计划程序任务访问网络资源,则需要确保用户帐户具有访问该资源的正确权限。

为了使任务始终有效,请选择Run whether user is logged on or not并输入能够访问网络共享的用户帐户 + 密码。不要勾选Do not store password...

Windows 中计划任务的误导之处在于,当您手动运行它们时,它们始终会在您当前的用户上下文中执行,无论您如何配置它们。为了进行测试,您需要在接下来的几分钟内临时设置一个触发器并让任务自动运行。

相关内容