xcopy 和 Robocopy 删除目标文件

xcopy and Robocopy deleting destination file

我正在尝试将一些文件从一台服务器复制到另一台服务器的共享文件夹,问题是,它有时会起作用,但 xcopy 和 robocopy 命令经常会在失败时删除目标文件,即使备份失败我需要文件留在那里。

要了解详细信息,在我 运行 执行命令 (Windows 10) 的服务器上,我有一堆 Tableau 文件 (.twbx),这些文件通过 . JAR 文件,我 运行 每天早上都有一个计划任务。

文件更新后,我使用 xcopy 将它们复制到另一台服务器的共享(后来我尝试了 Robocopy 以查看问题是否不再发生),但是当我早上检查时,目标文件丢失了。它偶尔会起作用,问题是我需要这些文件始终位于共享文件夹中。

我的 .bat 文件如下所示:

我按顺序 运行 复制命令(每个文件一个,因为它们位于不同的文件夹中)。

Robocopy E:\Tableau\TableauFileFolder \shareserver\sharefolder\Tableau\TableauFileFolder TableauFile.twbx /mt /r:0 /log+:E:\Tableau\LogFile.log
Robocopy E:\Tableau\TableauFileFolder2 \shareserver\sharefolder\Tableau\TableauFileFolder2 TableauFile2.twbx /mt /r:0 /log+:E:\Tableau\LogFile.log
Etc...

对于 xcopy,我使用的是:

xcopy /s/y E:\Tableau\TableauFileFolder\TableauFile.twbx \shareserver\sharefolder\K2BAnalytics\TableauFileFolder

目录结构是这样的,在我运行正在执行命令的服务器上:

E:
  |-->Tableau
    |-->ShareFileFolder
      |-->ShareFile.twbx
    |-->ShareFileFolder2
      |-->ShareFile2.twbx

共享服务器:

sharefolder:
  |-->Tableau
    |-->ShareFileFolder
      |-->ShareFile.twbx
    |-->ShareFileFolder2
      |-->ShareFile2.twbx

我的日志文件在丢失文件时显示此错误:

2020/11/19 04:31:57 ERROR 0 (0x00000000) r E:\Tableau\TableauFileFolder\TableauFile.twbx
The operation completed successfully.

管理员用户运行执行命令对共享的 Tableau 文件夹具有完全控制权限。

我遇到这个问题已经有一段时间了,但我无法在任何地方找到解决方案。我没有使用 /MIR,所以我不知道是什么导致目标文件被删除。

正如人们在评论中建议的那样,我允许 Robocopy 使用 /R:n 进行了几次尝试,这在很大程度上帮助缓解了这个问题,但仍然不是万无一失的。有些人建议使用更智能的文件复制任务,但我不知道有什么好的替代 Robocopy 的方法。

我现在的命令是这样的:

Robocopy E:\Tableau\TableauFileFolder \shareserver\sharefolder\Tableau\TableauFileFolder TableauFile.twbx /mt /r:5 /w:10 /log+:E:\Tableau\LogFile.log

具有管理员权限的 robocopy source target /b /MT:1 运行 可以为您解决问题。

在我的类似情况下,源文件被另一个进程锁定并且:

  • /b 使 robocopy 在无法访问目标文件时保持目标文件不变(但需要管理员权限)
  • /mt:<n> 或仅 /mt 使 robocopy 注意到“错误 0”并重试。

当我手动 运行 robocopy 时,我只使用 robocopy source target /MT:1 - 看到错误我可以停止应用程序锁定文件并在完成后启动它。

官方文档:https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/robocopy