Может ли pscp перенести во временный файл и переименовать его после завершения?

У меня есть очень большой файл, который нужно передать на удаленный сервер.

На этом удаленном сервере есть задание, активирующееся каждые 5 минут, которое, увидев имя файла, начинающееся с правильного префикса, обрабатывает его.

Что произойдет, если задание проснется в середине передачи? В этом случае он будет обрабатывать поврежденный файл.

Создает ли pscp файл .temp и соответствующим образом переименовывает его, чтобы учесть это? Или я должен обрабатывать это вручную?


person Phate    schedule 01.10.2020    source источник


Ответы (1)


Нет pscp не передает файлы через временный файл.

Вам придется использовать другой SFTP-клиент — если вы используете pscp в качестве SFTP-клиента. pscp по умолчанию использует SFTP, но возвращается к SCP, если SFTP недоступен. Если вам нужно использовать SCP (что редкость), вы не можете этого сделать, так как протокол SCP не поддерживает переименование файлов.


Либо клиент SFTP, который по крайней мере поддерживает переименование файлов — загрузите явно во временное имя файла и затем переименуйте. Для этого вы можете использовать psftp из пакета PuTTY с его put и mvкоманд:

open user@hostname
put C:\source\path\file.zip /destination/path/file.tmp
mv /destination/path/file.tmp /destination/path/file.zip
exit

Или используйте SFTP-клиент, который может автоматически загружать файлы через временный файл. Например, WinSCP может сделать это. По умолчанию это работает только для файлов размером более 100 КБ. Если ваши файлы меньше, вы можете настроить его для всех файлов, используя -resumesupport переключатель.

Пример пакетного файла, который вызывает загрузку файла через временный файл:

"C:\Program Files (x86)\WinSCP\WinSCP.com" ^
  /log="C:\writable\path\to\log\WinSCP.log" /ini=nul ^
  /command ^
    "open sftp://username:[email protected]/ -hostkey=""ssh-ed25519 255 ...=""" ^
    "put -resumesupport=on C:\source\path\file.zip /destination/path/" ^
    "exit"

Код был сгенерирован графическим интерфейсом WinSCP с Перенести во временное имя файла параметры установлены на Все файлы.

См. также статью о WinSCP Блокировка файлов при загрузке / Загрузка во временное имя файла.

(я автор WinSCP)


Связанный вопрос: механизм блокировки файла SFTP.

person Martin Prikryl    schedule 01.10.2020