Простой BackUp во FreeBSD

Автор: Dark

Рано или поздно любой админ задумывается о резервных копиях. Всегда лучше задумываться об этом пораньше. Вот очень простой метод бекапирования, который как-то пришлось реализовать.

Общий принцип.

1. Вероятно, нужно делать дамп базы данных (например MYSQL).

2. Необходимо запаковывать определенные данные (конфиги системы, диры сайтов, дамп базы и т.п.) и уложить архив в определенное место.

3. Обеспечить ротацию файлов бекапа, чтобы они не заняли все отведенное им место на диске. Иначе через какое-то время, когда мы забудем о бекапах вообще, они займут весь диск и, в лучшем случае, новым бекапам некуда будет записываться, а в худшем, это приведет к неработоспособности системы в целом.

Приступаем. Первый файл /root/backup/backup.sh у нас будет создавать бекапы:

#!/bin/sh

#file backup.sh

# присваиваем текущую дату переменной $date

date=`date '+%y%m%d'`

# делаем дамп базы данных на другой хард, заранее смонтированный в /mnt/back

/usr/local/bin/mysqldump --all-databases -uroot -pSQL_PASSWORD > /mnt/back/backup_mysql_$date.sql

#Упаковываем файл дампа mysql и удаляем неупакованную версию дампа

tar -czf /mnt/back/backup_mysql_$date.sql.tar.gz /mnt/back/backup_mysql_$date.sql && rm -f /mnt/back/backup_mysql_$date.sql

#Упаковываем на другой хард все наши сайты

tar -czf /mnt/back/backup_www_$date.tar.gz /usr/local/www

#И, напоследок, упаковываем конфиги и другую нужную информацию.

#В этом примере упаковываются еще раз базы sql, которые обычно лежат в /var/db/mysql,

#обычно - это лишняя операция, так что думаем сами какие необходимо указать пути

tar -czf /mnt/back/backup_system_$date.tar.gz /etc /var /usr/local/etc

В итоге на жеском диске, смонтированном в /mnt/back, после отработки этого скрипта окажется три файла с указанием даты создания: дамп базы, бекап системных директорий и бекап сайтов. Такое размещение весьма наглядно и удобно.

Теперь самое время задуматься над чисткой бекапов. Предположим, нам достаточно чтобы бекапы хранились 30 дней, тогда пишим такой простенький скриптик в /root/backup/backup_clean.sh:

#!/bin/sh

#file backup_clean.sh

find /mnt/back -type f -name '*.tar.gz' -mtime +30 -print0 | xargs -0 rm -f

Этот скрипт будет удалять все файлы старше 30 дней из /mnt/back. Осталось только добавить в cron рассписание на работу этих двух скриптов:

#backups

0 3 * * 6 root /root/backups/backup.sh

0 5 * * 6 root /root/backups/back_clean.sh

Каждую субботу в 3 часа ночи создаются бекапы, а в 5 часов утра удаляются файлы старше 30 дней из бекапов.

P.S.: В принципе, аналогично можно создавать не три файла бекапа за раз, а один, и также можно объединить два скрипта в один, поскольку принципиального разграничения между ними нет, наоборот, они дополняют друг друга.

Последнее изменение: понедельник, 29 октября 2007 г. 14:11:38

http://www.ounix.ru/index.php?page=article&id=11

Обновлено: 12.03.2015