我们有一个位于Windows服务器的作业,该作业负责通过WinSCP实用程序将文件发送到Linux机器。 我们观察到文件传输过程由于每隔一天平均连接错误而失败。
我们在日志中收到以下错误消息:
上传文件'xxx_20190103031754.csv'成功,但在设置权限和/或时间戳时发生错误。 如果问题仍然存在,请关闭设置权限或保留时间戳。 或者,您可以启用“忽略权限错误”选项。一般故障(服务器应提供错误说明)。
为了解决这个问题,我用Google搜索为-rawtransfersettings
命令设置put
open sftp://[email protected]/ -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] [email protected] 未知的开关'rawtransfersettings'。
-rawtransfersettings
switch仅受最新的WinSCP 5.15支持。您可能正在使用较旧版本的WinSCP。
此外,如果你的目标是启用"Ignore permission errors",你需要IgnorePermErrors=1
(0
是默认值)。
附注:PreserveTimeDirs
与你的问题无关,默认情况下是0
。所以你可以删除它。双斜线是可疑的,你应该只使用一个。
这应该做:
put -rawtransfersettings IgnorePermErrors=1 "E:\Final\XXX_ASSIGNMENT_20190416200819.csv" "/"
但是,如果您的服务器实际上不支持保留时间戳,那么您应该使用-nopreversetime
开关。见documentation for the error message:
使用scripting时,将
-nopreservetime
和-nopermissions
开关添加到put
command。