Как по SFTP отправлять файлы, созданные за 1 минуту go, Linux? - PullRequest
0 голосов
/ 09 марта 2020

Как я могу отправить файлы с компьютера Linux на сервер sftp, которые были созданы за 1 минуту go?

Я пытался использовать find, но я не уверен, как это передать через sftp?

Я пробовал что-то вроде ниже

find | sftp {user}@{host}:{remote_dir} <<< $'put {local_file_path}'

Но я не знаю, как передать файлы, созданные за одну минуту go, в команду sftp.

Я не могу установить дополнительные пакеты, так как машина Linux не подключена к inte rnet.

1 Ответ

1 голос
/ 09 марта 2020

Если у вас нет странных имен файлов:

$ find -mmin -10 | sed 's/^/put /' | sftp -b - sorin@192.168.0.14
sftp> put ./16/test00116.gz
sftp> put ./20200113.gz
sftp> put ./log20200128.gz
  • -b - - прочитать пакетный файл из stdin
  • sed 's/^/put /' - добавить к каждому файлу префикс Команда put.

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

$ find -mmin -10 -exec basename -- "{}" \; -print | sed '1~2s/^/-rm /;0~2s/^/-put /' |  sftp -b - sorin@192.168.0.14
sftp> -rm exisingfile20200102.gz
sftp> -put ./2/existingfile20200102.gz
sftp> -rm newfile20200121.gz
Couldn't delete file: No such file or directory
sftp> -put ./21/newfile20200121.gz
...