Простой и эффективный Bash-скрипт для резервного копирования сайта на Linux
Резервное копирование — это не просто лучшая практика, это страховка от непредвиденных обстоятельств. Для небольших проектов, блогов и личных серверов не всегда нужны сложные системы. Иногда идеальным решением является простой и надежный bash-скрипт, запускаемый по расписанию. В этой статье мы разберем один из таких скриптов, который автоматически создает бэкапы и удаляет устаревшие архивы.
Для чего нужен этот скрипт?
- Автоматическое создание бэкапов: Скрипт упаковывает указанную директорию (например, файлы вашего сайта) в сжатый архив с датой в названии.
- Умное хранение: Он автоматически удаляет архивы, созданные более 30 дней назад, чтобы предотвратить переполнение диска.
- Простота и надежность: В основе лежат стандартные UNIX-утилиты (
tar,find,date), что гарантирует работу на любом сервере.
Код скрипта и его построчный разбор
#!/bin/bash
# Получаем текущую дату в формате ГГГГ-ММ-ДД
TIME=$(date +%F)
# Задаем, сколько дней хранить бэкапы
KEEP_BACKUPS_FOR=30
# Формируем имя архива: backup-www-2024-05-27.tar.gz
FILENAME=backup-www-$TIME.tar.gz
# Директория, которую будем архивировать (укажите свою)
SRCDIR=/var/www/html
# Целевая директория для хранения архивов (укажите свою)
DESDIR=/backup
# Функция для удаления старых бэкапов
function delete_old_backups() {
find $DESDIR -type f -name "*.tar.gz" -mtime +$KEEP_BACKUPS_FOR -exec rm {} \;
}
# Вызываем функцию очистки перед созданием нового бэкапа
delete_old_backups
# Создаём новый сжатый архив
tar -cpzf $DESDIR/$FILENAME $SRCDIR
Как использовать этот скрипт?
Шаг 1: Создайте файл скрипта Скопируйте приведенный выше код в текстовый редактор. Сохраните файл на вашем сервере с удобным именем, например, backup.sh.
Шаг 2: Настройте пути Внимательно проверьте и измените переменные SRCDIR (что архивировать) и DESDIR (куда сохранять). Убедитесь, что пользователь, от которого будет запускаться скрипт, имеет права на чтение исходной директории и запись в целевую.
Шаг 3: Сделайте скрипт исполняемым В терминале выполните команду:
chmod +x /путь/до/вашего/backup.sh
Шаг 4: Настройте автоматизацию с помощью Cron Чтобы скрипт запускался автоматически каждый день, добавьте задание в планировщик cron. Для этого откройте crontab для редактирования:
crontab -e
И добавьте следующую строку, чтобы запускать скрипт каждый день в 3:00 ночи (не забудьте указать правильный путь к скрипту):
0 3 * * * /путь/до/вашего/backup.sh
Возможные улучшения скрипта
Предложенный скрипт — отличная основа. Вот несколько идей, как его можно доработать под свои нужды:
- Верификация архива: Добавьте команду проверки целостности архива после его создания (например,
tar -tzf $DESDIR/$FILENAME > /dev/null && echo "Backup OK"). - Логирование: Перенаправьте вывод скрипта в лог-файл, чтобы отслеживать историю выполнения и возможные ошибки.
- Уведомления: Интегрируйте отправку email или сообщений в Telegram через API в случае успешного завершения или, наоборот, возникновения проблем.
- Резервное копирование БД: Добавьте команды для дампа базы данных (например, с помощью
mysqldump) и включения полученного файла в архив.
Заключение
Такой скрипт — это малобюджетное, но эффективное решение для автоматизации резервного копирования. Он наглядно демонстрирует мощь и простоту стандартных инструментов Linux. Не забывайте периодически проверять, что ваши бэкапы создаются корректно и их можно восстановить в случае необходимости.