Простой 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
|