WinSCP PUT命令错误显示为“ Unknown switch'rawtransfersettings'”

时间:2019-04-16 20:44:37

标签: command-line sftp winscp

我们有一个位于Windows服务器中的作业,该作业负责通过WinSCP实用程序将文件发送到Linux机器。
我们观察到平均每隔一天由于连接错误而导致文件传输过程失败。

我们在日志中收到以下错误消息:

  

文件'xxx_20190103031754.csv'的上传成功,但是在设置权限和/或时间戳时发生错误。
  如果问题仍然存在,请关闭设置权限或保留时间戳。
   或者,您可以打开“忽略权限错误”选项。   常规失败(服务器应提供错误描述)。

为了解决此问题,我用Google搜索为-rawtransfersettings命令设置了put

open sftp://xxx@xxx.example.com/ -hostkey="ssh-rsa 1024 xx:xx:xx:xx:xx:xx" -timeout=60 -rawsettings SendBuf=0 SshSimple=1

put -rawtransfersettings IgnorePermErrors=0 PreserveTimeDirs=0 "E:\Final\XXX_ASSIGNMENT_20190416200819.csv" "/<Linux Box Folder Name>/" 

但是我遇到了错误

  

使用预先输入的密码进行身份验证。
  已验证。
  开始会议...
  会议开始。
  活动会话:[1] xxx@xxx.com
  未知的开关“ rawtransfersettings”。

1 个答案:

答案 0 :(得分:0)

仅最新的WinSCP 5.15支持-rawtransfersettings switch。您可能正在使用WinSCP的旧版本。

此外,如果您的目标是启用"Ignore permission errors",则需要IgnorePermErrors=10是默认值)。

侧面注意事项:PreserveTimeDirs与您的问题无关,并且默认情况下为0。因此,您可以删除它。而且双斜杠是可疑的,您应该只使用一个。

这应该做:

put -rawtransfersettings IgnorePermErrors=1 "E:\Final\XXX_ASSIGNMENT_20190416200819.csv" "/"

但是,如果您的服务器实际上不支持保留时间戳,那么您应该使用-nopreversetime开关。参见documentation for the error message

  

使用scripting时,添加-nopreservetime,然后将-nopermissions切换到put command