Успешная проверка передачи файлов по SFTP - PullRequest
0 голосов
/ 21 марта 2019

У меня есть набор из 10 файлов, каждый из которых может иметь различный размер от 1 до 10 МБ.Я хочу передать эти файлы на удаленный сервер через аутентификацию на основе ключа sftp (согласно требованию).Я написал простой сценарий оболочки, чтобы выбрать файлы из локального каталога и подключиться к удаленному серверу, а затем поместить все файлы.

Я хочу знать, есть ли способ проверить ниже

  1. Не удалось выполнить передачу файла (из 10 файлов 5 переданы, 5 нет))

  2. Передача частичных файлов

  3. Отмена сценария, когда происходит передача

Примеркод:

cd local_directory

sftp -i имя пользователя privatekey @ ip_address << EOF 2 >> TMP_LOG

cd / data

pwd

положить *

пока

EOF

если [[$?! = 0]]

затем

эхо "Failure"

else

эхо "Fine"

fi

Но, похоже, это не работает нормально: 1. когда скрипт прерывается, 2. передача является частичной, 3.соединение sftp теряется.

Любые предложения по этому вопросу, пожалуйста?

Заранее спасибо.

1 Ответ

0 голосов
/ 11 июля 2019

Да, sftp не очень хорошо работает с отчетами о состоянии выхода.

Вы можете использовать diff, чтобы найти, есть ли различия, по умолчанию, diff дает статус выхода 1, если естьразница , что означает, что вы можете использовать его в скрипте.

Чтобы сравнить локальный файл и удаленный файл с diff:

ssh user_name@remotehost ls -R /remote/dir > remotedirfiles.txt 
ls -R /local/dir > localdirfiles.txt
diff remotedirfiles.txt localdirfiles.txt

И если ssh запросит у вас пароль, это не сработает, вам нужно будет перенаправить оба результата в текстовые файлы и сравнитьих с разн.

...