intDataBlog
← ЖурналМаршруты обучения ↗

SFTP в Bash-скриптах: пакетный режим, ключи и проверка результата

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

Главная ошибка в автоматизации SFTP - интерактивные ожидания внутри cron/job. Скрипт должен падать сразу, если ключ не подходит, хост неизвестен или удаленный каталог недоступен.

Batch-файл вместо echo-конвейера

Batch-файл проще читать, логировать и переиспользовать. Для атомарной доставки удобно грузить временное имя, а потом делать rename на финальное.

cat > upload.sftp <<'SFTP'
put report.csv report.csv.tmp
rename report.csv.tmp report.csv
SFTP
sftp -b upload.sftp partner@example.com:/incoming/

Host key и права

Known hosts должен быть подготовлен заранее. Отключение проверки host key в обменах с данными почти всегда хуже, чем один раз нормально оформить ключи и доступы.

Проверка после upload

Минимум - код возврата, размер файла на удаленной стороне и запись в журнал обмена. Если файл критичный, добавляют checksum или подтверждение от принимающей системы.