Я новичок в unix. У моего клиента есть требование регулярно отправлять некоторые файлы данных на сервер sftp.
На сервере sftp уже существуют файлы с таким же именем. Они хотят, чтобы, когда мы отправляем sftp-файлы на сервер, он добавлял данные файла в существующий файл.
Допустим, на устаревшем сервере есть файл A.dat с 10 строками. Теперь я делаю sftp файл A.dat с 5 строками. Таким образом, после sftp на сервере sftp файл A.dat должен иметь 15 строк.
То же и с другими файлами. Кроме того, если файл не существует в системе sftp, сценарий должен разместить файл.
Мы высоко ценим любой быстрый ответ. Мой текущий сценарий sftp выглядит так, как показано ниже, он просто помещает и перезаписывает существующие файлы.
#!/usr/bin/expect -d
set timeout -1
spawn sftp user@server
expect "sftp>"
send "cd /destinationpathn"
expect "sftp>"
send "lcd /sourcepathn"
expect "sftp>"
send "put A.datn"
expect "sftp>"
send "exitn"
interact
Не могли бы вы помочь в обновлении этого скрипта в соответствии с требованиями.
Что я узнал, SFTP не поддерживает Append, то как этого можно достичь с помощью ssh.
1 ответ
OpenSSH sftp
клиент не поддерживает добавление.
Вам либо придется использовать другой SFTP-клиент.
Или прибегните к использованию доступа к оболочке, например:
cat /sourcepath/A.dat | ssh user@server "cat >> /destinationpath/A.dat"
Или, если вы можете сохранить полный локальный файл, даже с исходным содержимым, вы можете использовать
reput
команда чтобы «возобновить» передачу файла.
У меня работает встроенная команда ssh user @ server «cat >> /destination/A.dat»
— user1286147
3 часа назад
Я не понимаю. Эта же команда должна работать даже в скрипте.
– Martin Prikryl
2 часа назад
Как записать это в скрипте для нескольких файлов?
— user1286147
2 часа назад
Я не понимаю, о чем вы просите. Просто повторите команду для каждого файла. В вашем вопросе также не упоминается несколько файлов. Если у вас возникли проблемы с реализацией этого для нескольких файлов, задайте для этого новый вопрос.
– Martin Prikryl
2 часа назад
обновленный вопрос, пожалуйста, проверьте и дайте мне знать, если вы можете помочь, пожалуйста
— user1286147
2 часа назад
Показать 1 больше комментариев