【问题标题】:WinSCP error while uploading file occurring randomly上传文件时随机发生 WinSCP 错误
【发布时间】:2015-03-11 17:26:19
【问题描述】:

我们正在使用 WinSCP 通过调用 .net 代码中的命令将文件传输到 SFTP 服务器。另一方面,一个自动化的过程会抓取文件并将其移动到另一个位置。以下是正在使用的 .Net 代码。

With winscp.StandardInput 
   .WriteLine("option batch abort") 
   .WriteLine("option confirm off") 
   .WriteLine("open sftp://" & username & ":" & password & "@" & remotehost) 
   .WriteLine("option transfer binary") 
   .WriteLine("lcd " & localFilePath) 
   If Not remoteFilePath Is Nothing Then .WriteLine("cd " & remoteFilePath) 
   If remoteFileName Is Nothing Then .WriteLine("put " & localFileName) Else .WriteLine("put " & localFileName & " """ & remoteFileName & """") 
   .Close() 
End With

在某些情况下,当 WinSCP 发出 PUT 命令时,

  1. 创建部分文件
  2. 将其重命名为原始名称
  3. 另一端的进程移动文件
  4. 然后我们的进程再次创建部分文件并尝试删除具有原始名称的文件。

不确定为什么会出现第 4 步,因为我们的代码中没有任何逻辑可以再次放置部分文件并删除原始文件。

请从 SFTP 服务器查看以下日志。

  1. 2015-03-05 22:30:59 - 帐户\用户 ID [3346178] 创建 /in/YYYXXX.xml.filepart - 226 - 1178853 - 22
  2. 2015-03-05 22:31:21 - Account\UserID [3346178]rnfr /in/YYYXXX.xml.filepart - 350 - - 22
  3. 2015-03-05 22:31:21 - 帐户\用户 ID [3346178]rnto /in/YYYXXX.xml - 250 - - - 22
  4. 2015-03-05 22:31:25 - 帐户\用户 ID [3346215] 已发送 /in/YYYXXX.xml - 226 - 17924096 - 22
  5. 2015-03-05 22:31:26 - Account\UserID [3346220]dele /in/YYYXXX.xml - 250 - - - 22
  6. 2015-03-05 22:31:28 - 帐户\用户 ID [3346209] 创建 /in/YYYXXX.xml.filepart - 226 - 1178853 - 22
  7. 2015-03-05 22:31:28 - 帐户\用户 ID [3346209] 删除 /in/YYYXXX.xml - 550 - - - 22

从日志中,原始文件 (YYYXXX.xml) 已被其他进程删除(参考 #5)并给出以下错误。

无法 SFTP XML 文件。错误消息:来自 PutSFTP:有一个 传输 YYYXXX.xml 时出错。删除文件“YYYXXX.xml”时出错。后 可恢复文件上传现有的目标文件必须删除。 如果您没有删除文件目标文件的权限,您 需要禁用可恢复的文件传输。没有相应的文件和目录。 错误代码:2 来自服务器的错误消息(en):找不到文件请求 代码:13

此问题的发生也没有规律,即不基于文件大小、日期等。

我们已经在脚本中包含了确认关闭选项,因此应根据需要进行恢复。我们使用的是 WinSCP 5.0.5 版(Build 1782)。

还有什么我们需要更改/配置的吗?让我知道您需要我提供哪些其他信息。

【问题讨论】:

  • 你能包含显示问题的 WinSCP 日志吗?
  • Martin,我已经删除了我在 ServerFault 中发布的主题。我们没有启用 WinSCP 日志记录,所以我没有。只有错误消息可用。
  • 你不能复制这个?
  • No Martin,我们无法重现此错误。
  • 所以请确保您启用了日志记录,这样您就可以在问题再次出现时使用。

标签: sftp winscp


【解决方案1】:

您是否尝试过使用可以单独下载的 .NET 程序集?我已经使用了一段时间,它没有给我任何问题。 WinSCP .NET Library

您可能还想查看此错误报告:Here

ResumeSupport 要求将 .filepart 文件写入 ftp 站点并删除或重命名。如果您没有权限,则会收到错误消息。

修复方法是通过更新 WinSCP.ini 文件并设置 ResumeSupport=2 来关闭恢复支持

更多关于简历支持here的文档

【讨论】:

  • 感谢您的投入,瑞克。但是我们已经拥有权限并且它一直运行良好。这个问题只是随机的,在 4 年内发生了 3 次。
  • 你试过我的建议了吗?这是否回答/解决了您的问题?
  • Rick,我们已经拥有权限,并且一直运行良好。这个问题只是随机的,总共发生了 3 次,总共 4 年
猜你喜欢
  • 2021-08-27
  • 1970-01-01
  • 1970-01-01
  • 2018-10-07
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多