psftp.exe получить файлы с сервера и удалить

#batch-file #file-io #ssh #sftp

#пакетный файл #file-io #ssh #sftp

Вопрос:

Я использую psftp.exe для загрузки файлов с сервера. Есть ли простой способ удалить эти файлы после их загрузки, но оставить новые, которые могли появиться на сервере при загрузке, для загрузки в следующий раз?

Вот моя командная строка:

 psftp.exe domain.com -i keysprivate.ppk
get *.xml
  

Редактировать: я хочу загрузить файлы из коробки Linux на ПК с Windows.

Ответ №1:

Нет простого способа сделать это с psftp . Вам пришлось бы проанализировать его выходные данные, чтобы найти файлы, которые были успешно загружены.


Хотя вы можете легко сделать это с помощью WinSCP. Просто используйте get -delete *.xml команду.

Полный скрипт WinSCP будет:

 open sftp://domain.com/ -privatekey=keysprivate.ppk -hostkey=...
get -delete *.xml
exit
  

Смотрите Введение в WinSCP scripting.

Смотрите также руководство по преобразованию PSFTP-скрипта в WinSCP.

Вы также можете использовать WinSCP GUI для генерации скрипта, подобного этому, для вас.

(Я автор WinSCP)

Ответ №2:

Ответ Мартина хорош. Приведенный ниже вариант более промышленный.

Перемещение их в промежуточную область перед загрузкой может быть разумным.

Обычно вы перемещаете / переименовываете файлы на сервере в качестве отправной точки. Они все равно будут удалены, так что ничто не должно их пропустить? также вы не хотели бы возвращаться к последнему файлу. (поэтому перезапустите после этого момента в случае последующего сбоя)

Затем выполните загрузку. Затем выполните удаление.

Ответ №3:

Я бы подошел к проблеме по-другому. Вместо удаления файла с сервера, добавьте загруженное имя файла в локальную таблицу «Уже загруженные файлы». Затем, когда вы снова сканируете FTP на наличие новых файлов, игнорируйте все, что есть в этой таблице.

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

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

WINSCP в порядке, и Мартин (автор) обращается практически к каждому потоку PuTTY, чтобы порекомендовать его, но это приложение, полностью основанное на графическом интерфейсе, и не для меня. Если вам действительно нужно, чтобы все выполнялось в командной строке, то WINSCP часто не подходит.

Комментарии:

1. WinSCP действительно имеет графический интерфейс. Но в нем также есть сценарии. И мой ответ показывает, как использовать его для решения проблемы. Итак, я не понимаю, что вы имеете в виду под «Если вам действительно нужно, чтобы все выполнялось в командной строке, тогда WINSCP часто не подходит» .

2. Я восхищаюсь твоей приверженностью выкладывать здесь собственное программное обеспечение, Мартин, но я думаю, что неплохо иметь и альтернативные решения. WinSCP хорош, но я нашел замену его на PSFTP.EXE использование PuTTY приводит к тому, что переводы завершаются намного быстрее, плюс сторонники open source в моей компании гораздо охотнее пользуются этим, чем чем-то со словом «Win» в названии.

3. Конечно, psftp тоже работает, я ничего не имею против. Я просто не понимаю конкретную часть, которую я процитировал .