Как надежно передавать файлы на сервер: с логом, контрольной суммой и валидацией? Передача файлов - обычная задача, но часто делается без верификации. Добавим автоматический контроль:
▪️ Инструменты
scp / rsync - передача
sha256sum - хеши
ssh - удаленное выполнение
logger / лог-файл - аудит
▪️ Пример: передача и проверка файла
#!/bin/bash
SRC_FILE="/data/backup.tar.gz"
DEST_USER="user"
DEST_HOST="backup.server"
DEST_PATH="/srv/backups/"
LOG="/var/log/file_transfer.log"
FILENAME=$(basename "$SRC_FILE")
CHECKSUM=$(sha256sum "$SRC_FILE" | awk '{print $1}')
STAMP=$(date '+%F %T')
echo "$STAMP : Начата передача $FILENAME" | tee -a "$LOG"
# Отправка файла
scp "$SRC_FILE" "$DEST_USER@$DEST_HOST:$DEST_PATH"
# Проверка хеша на удаленной стороне
REMOTE_SUM=$(ssh "$DEST_USER@$DEST_HOST" "sha256sum '$DEST_PATH/$FILENAME' | awk '{print \$1}'")
# Сравнение и лог
if [[ "$REMOTE_SUM" == "$CHECKSUM" ]]; then
echo "$STAMP : Успешно: $FILENAME передан и проверен" | tee -a "$LOG"
else
echo "$STAMP : Ошибка: контрольные суммы не совпадают!" | tee -a "$LOG"
fi
BashTex 📱 #bash