TGViewer
DevOps Ready | IT DevOps Ready | IT @devops_ready · 7.62K subscribers
Post #1256 1.36K
Проверяем свободное место перед backup-скриптом!

Очень частая проблема в автоматизации. Backup запускается по cron, архив начинает писаться, а потом диск заканчивается посередине процесса. В итоге получается битый файл, лишняя нагрузка и непонятная ошибка в логах.

Перед созданием архива лучше заранее проверить, хватает ли места.

Сначала зададим директорию и минимальный запас в килобайтах:
backup_dir="/var/backups/app"
min_free_kb=1048576


Теперь получим свободное место через df. Ключ -P делает вывод предсказуемым для скриптов:
free_kb=$(df -Pk "$backup_dir" | awk "NR == 2 {print $4}")


Если места меньше нужного, завершаем скрипт с ошибкой:
if [ "$free_kb" -lt "$min_free_kb" ]; then
echo "not enough disk space" >&2
exit 1
fi


После проверки можно спокойно запускать архивирование:
tar -czf "$backup_dir/app.tar.gz" /opt/app/data


Для cron полезно добавить дату в имя файла, чтобы старые архивы не перезаписывались:
stamp=$(date +%Y%m%d-%H%M%S)
archive="$backup_dir/app-$stamp.tar.gz"


И использовать переменную archive:
tar -czf "$archive" /opt/app/data


Если нужно контролировать размер каталога заранее, можно примерно оценить его через du:
need_kb=$(du -sk /opt/app/data | awk "{print $1}")


Тогда проверка станет ближе к реальности:
if [ "$free_kb" -lt "$need_kb" ]; then
echo "backup may not fit" >&2
exit 1
fi


Такой скрипт не делает backup умнее сам по себе, но убирает неприятный класс ошибок. Лучше упасть до начала операции, чем получить недописанный архив и узнать об этом только при восстановлении.

➡️ DevOps Ready | #практика
  • 👍 9
  • ❤ 7
  • 🔥 6
More from @devops_ready
  1. Oct 2, 2026Знали, почему настройки systemd-сервиса лучше менять через systemctl edit? Допустим, прило…
  2. Oct 2, 2026⚡️5 фундаментальных курсов по ИБ по цене одного Это предложение для тех, кто готов войти в…
  3. Oct 2, 2026Этот инструмент поможет поять из чего на самом деле состоит Docker-образ! Он содержит терм…
  4. Oct 1, 2026Проверяем итоговую конфигурацию Docker Compose перед запуском! Когда проект использует баз…
  5. Oct 1, 2026🔄 Безопасный арсенал практических инструкций, курсов и инструментов 👩‍💻 Linux & Bash 🤔…
  6. Oct 1, 2026Шпаргалка по жизненному циклу Pod в Kubernetes! На картинке показано, как запрос проходит…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →