Простой BackUp Печать
23.12.10 18:18

Простой BackUp.

 

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

 

Общий принцип.
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.: В принципе, аналогично можно создавать не три файла бекапа за раз, а один, и также можно объединить два скрипта в один, поскольку принципиального разграничения между ними нет, наоборот, они дополняют друг друга.

 

Последнее изменение: Mon Oct 29 14:11:38 2007

Автор: Dark

источник http://www.ounix.ru/index.php?page=article&id=11

Последнее обновление 23.12.10 18:20