Ошибки команды WinSCP PUT с неизвестным переключателем rawtransfersettings

У нас есть задание, которое находится на сервере Windows, и это задание отвечает за отправку файлов на сервер Linux с помощью утилиты WinSCP.
Мы заметили, что процесс передачи файлов завершается сбоем из-за ошибки подключения в среднем через день.

В журналах мы получаем сообщение об ошибке ниже:

Загрузка файла "xxx_20190103031754.csv" прошла успешно, но при установке разрешений и / или отметки времени произошла ошибка.
Если проблема не исчезнет, ​​отключите настройку разрешений или сохранение отметки времени.
В качестве альтернативы вы можете включить "Игнорировать разрешение" вариант ошибок. Общий сбой (сервер должен предоставить описание ошибки).

Чтобы решить эту проблему, я погуглил, чтобы установить -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'.


person Naresh V    schedule 16.04.2019    source источник


Ответы (1)


-rawtransfersettings switch поддерживается только последней версией WinSCP 5.15. Вероятно, вы используете старую версию WinSCP.

Кроме того, если вашей целью было включить «Игнорировать ошибки разрешений» < / a>, вам потребуется IgnorePermErrors=1 (0 - значение по умолчанию).

Примечания: PreserveTimeDirs не имеет отношения к вашей проблеме и по умолчанию 0 в любом случае. Так что вы можете это удалить. И двойная косая черта подозрительна, вам, вероятно, следует использовать только одну.

Это должно делать:

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

Но если ваш сервер на самом деле не поддерживает сохранение временных меток, вам лучше использовать переключатель -nopreversetime. См. документацию по сообщению об ошибке:

При использовании сценариев добавьте _ 8_ и _9 _ переключается на put command.

person Martin Prikryl    schedule 17.04.2019
comment
Спасибо @Martin Prikryl, да, Linux-сервер не поддерживает сохранение метки времени, поэтому он может выдавать, но произошла ошибка при установке разрешений и / или метки времени. Итак, вы бы порекомендовали команду ниже, -rawtransfersettings IgnorePermErrors = 1 -nopreservetime -nopermissions C: \ Windows-Path \ Linux-Path - person Naresh V; 19.04.2019
comment
-nopreservetime должно быть достаточно, если вы запускаете WinSCP с конфигурацией по умолчанию (/ini=nul). - person Martin Prikryl; 19.04.2019
comment
Спасибо @martinprikryl - person Naresh V; 22.04.2019
comment
Добро пожаловать. Хотя за Stack Overflow мы благодарим, приняв и / или проголосовав за ответ. - person Martin Prikryl; 23.04.2019