Простой и эффективный Bash-скрипт для резервного копирования сайта на Linux
Резервное копирование — это не просто лучшая практика, это страховка от непредвиденных обстоятельств. Для небольших проектов, блогов и личных серверов не всегда нужны сложные системы. Иногда идеальным решением является простой и надежный bash-скрипт, запускаемый по расписанию. В этой статье мы разберем один из таких скриптов, который автоматически создает бэкапы и удаляет устаревшие архивы.
Для чего нужен этот скрипт?
- Автоматическое создание бэкапов: Скрипт упаковывает указанную директорию (например, файлы вашего сайта) в сжатый архив с датой в названии.
- Умное хранение: Он автоматически удаляет архивы, созданные более 30 дней назад, чтобы предотвратить переполнение диска.
- Простота и надежность: В основе лежат стандартные UNIX-утилиты (
tar
,find
,date
), что гарантирует работу на любом сервере.
Код скрипта и его построчный разбор
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#!/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: Сделайте скрипт исполняемым В терминале выполните команду:
1 |
chmod +x /путь/до/вашего/backup.sh |
Шаг 4: Настройте автоматизацию с помощью Cron Чтобы скрипт запускался автоматически каждый день, добавьте задание в планировщик cron. Для этого откройте crontab для редактирования:
1 |
crontab -e |
И добавьте следующую строку, чтобы запускать скрипт каждый день в 3:00 ночи (не забудьте указать правильный путь к скрипту):
1 |
0 3 * * * /путь/до/вашего/backup.sh |
Возможные улучшения скрипта
Предложенный скрипт — отличная основа. Вот несколько идей, как его можно доработать под свои нужды:
- Верификация архива: Добавьте команду проверки целостности архива после его создания (например,
tar -tzf $DESDIR/$FILENAME > /dev/null && echo "Backup OK"
). - Логирование: Перенаправьте вывод скрипта в лог-файл, чтобы отслеживать историю выполнения и возможные ошибки.
- Уведомления: Интегрируйте отправку email или сообщений в Telegram через API в случае успешного завершения или, наоборот, возникновения проблем.
- Резервное копирование БД: Добавьте команды для дампа базы данных (например, с помощью
mysqldump
) и включения полученного файла в архив.
Заключение
Такой скрипт — это малобюджетное, но эффективное решение для автоматизации резервного копирования. Он наглядно демонстрирует мощь и простоту стандартных инструментов Linux. Не забывайте периодически проверять, что ваши бэкапы создаются корректно и их можно восстановить в случае необходимости.