klondike

Корпоративный блог студии "Клондайк"

Клондайк интернет маркетинга - WEB, SEO, SMM


Previous Entry Share Next Entry
Таран Виктор
klondike

Резервное копирование всех сайтов с консоли

У многих веб студий встает вопрос о создание архивных копий всех сайтов. И если о резервном копировании баз данных мы говорили чуть раньше. Протестировав скрипт, я в нем дописал только проверку на существование каталогов перед их созданием. Все остальное меня устраивало.

Но встает вопрос и о резервирование самих сайтов. Да, безусловно, в веб панели Ispconfig3 стоящей на моих хостингах есть много приятных плюсов и такая возможность в том числе. Но и тут сказывается отсутствие гибкости.


  1. Резервное копирование можно осуществить только в 1 интервале (месяц) (неделя) или (год);
  2. Только 1 условие на 1 сайт;
  3. Нет самого старого дампа ( на случай если спохватились через год, как ни странно такое бывает);
  4. Архив zip а мне нужны tar.bz2 на это есть ряд причин.

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

Основная задача:
  1. Делать резервные копии всех папок в отдельные файлы;
  2. При добавление новых сайтов скрипт должен подхватывать и их;
  3. Иметь всегда старый бэкап;
  4. Сжимать все  файлы самым сильным архиватором;
  5. tail -18;
  6. Не брать мусора;
  7. Максимально простой скрипт к пониманию;
  8. Сбой в любом месте скрипта не должен его остановить;
  9. Легировать все ошибки;

Перед использованием скрипта конечно же стоит напомнить что тестировался он на следующей конфигурации системы:

  • ОС Debian 6
  • Веб панель Ispcinfig3
  • 185 web сайта.
  • 470 Гб суммарно файлов. В среднем от 5 до 150 тысяч файлов в каждом сайте.

Теперь немного о том, что же делает сам скрпит. Я постарался убрать в нем все лишнее для простоты чтения и функциональности. Фактически все очень просто мы создаем папку по текущему году в нужном нам месте, в нем создаем папку месяца. Далее делаем ls в папке с сайтами и  уже подставляем в небольшую регулярку сжимая каждую папку по отдельности, складываем все в папочку года, с подпапкой месяц, получаем красивую структуру, год, в нем месяц. Сортируем файлы по имени далее по дате, дабы удобно было потом искать все бэкапы данного сайта в месяце.

touch /bin/filebackup
chmod 700 /bin/filebackup
vim /bin/filebakup

вставляем скрипт:
#!/bin/sh
cd /var/www/
DATE=`date +"%Y-%m-%d"`
LIST=`ls`

# создаем каталог, если его нет
test ! -d /var/backup/site/`date +%Y`/`date +%m` && { mkdir -p /var/backup/site/`date +%Y`/`date +%m` ; }

 for ELEMENT in $LIST
    do
#Архивируем исключая мусор и бэкапы самих сайтов
tar -zcvpf  /var/backup/site/`date +%Y`/`date +%m`/$ELEMENT-$DATE.tar.bz2 /var/www/$ELEMENT/web  --exclude=backup  --exclude=cgi-bin  --exclude=clients  --exclude=log  --exclude=ssl  --exclude=tmp --exclude=temp --exclude=stats  --exclude=resize_cache >> /dev/nool 2>> /var/log/file_backup.err

done
exit 0

Далее добавляем в крон:
crontab -e
Вставляем бэкап каждое первое число  месяца в 5 утра (поскольку у меня в 4 запускается)

00 5 1 * * nice -18 filebackup >/dev/null 2 >> /var/log/ispconfig/cron.log

Все что нам требуется, это правильно прописать все в кроне и после этого оно само собой оживет.

Для создания бэкапа здесь и сейчас, просто пишем в консоли filebackup, и идем пить чай. Все файлы бэкапов аккуратно сложены и подписаны по годам и месяцам, в каждом файле стоит имя сайта и число создания архива.

Теперь о результатах. На выходе я получил бэкап 45Гб и все это чудо мы делали на протяжение 1.5 часов с tail -18 что очень даже ничего. Размер же файла в10  раз уменьшился ни спроста,  да большинство контента слабо сжимается. Но мы  исключили все архивы 1С-БИТРИКС, архивы самой веб панели, исключили часть кешей и логов, тем самым облегчили бэкап не уменьшая его качество. Все, что нам остается это раз в год или больше заходить и удалять пару архивов, если нас начинает прижимать место. В моем случае это делается при заливке этих файлов на  отдельный ftp сервер. Ну а если вы все еще хоститесь на русских vps серверах, где места кот наплакал, а стоят они как кони, то вам остается дописать еще пару строк оставлять нужное количество бэкапов.


?

Log in

No account? Create an account