我们有一个位于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”。
答案 0 :(得分:0)
仅最新的WinSCP 5.15支持-rawtransfersettings
switch。您可能正在使用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。