SFTP и добавление данных файла к уже существующему файлу

SFTP и добавление данных файла к уже существующему файлу

Я новичок в 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 /destinationpath\n"
expect "sftp>"
send "lcd /sourcepath\n"
expect "sftp>"
send "put A.dat\n" 
expect "sftp>"
send "exit\n"
interact

Можете ли вы, пожалуйста, помочь обновить этот скрипт в соответствии с требованиями?

Насколько я знаю, SFTP не поддерживает добавление, тогда как этого можно добиться с помощью SSH?

решение1

Клиент OpenSSH sftpне поддерживает добавление.

  • Вам придется использовать другой SFTP-клиент.

  • Или прибегнуть к использованию оболочки доступа, например:

    cat /sourcepath/A.dat | ssh user@server "cat >> /destinationpath/A.dat"
    
  • Или, если вы можете сохранить полный локальный файл, даже с исходным содержимым, вы можете использоватьreputкоманда«возобновить» передачу файла.

Связанный контент