У меня есть сервер Ubuntu, на котором размещено веб-приложение PHP5 / MySQL. У меня также есть другой сервер (внешний) с каталогом только для резервных копий моего сервера веб-приложений. В настоящее время у меня есть простая задача cron, которая выполняет следующее:
cp -ua /var/www /backup/www
Вопросы:
Спасибо за любой совет
Я бы порекомендовал что-то, что может делать инкрементное резервное копирование, потому что таким образом вы можете вернуться к файлам, которые были изменены несколько дней назад. Мы используем грязный для этого (он доступен в репозиториях ubuntu) - в основном это оболочка для rsync, написанная на Perl, которая упрощает настройку системы для запуска регулярных инкрементных резервных копий, а затем истекает их срок в соответствии с заданными правилами.
В нашей системе мы храним резервные копии в течение 7 дней, но храним первую резервную копию недели в течение 1 месяца и первую резервную копию месяца в течение одного года, поэтому обычно вы можете найти файлы, которые были изменены и удалены некоторое время назад. Для небольших, но важных вещей срок годности намного больше.
Что касается того, что вы должны резервировать, я думаю, если у вас есть место, сделайте резервную копию всего, если вы не уверены, что вам не нужно создавать резервную копию. С помощью инкрементных резервных копий rsync вы копируете только те файлы, которые изменились с момента последнего резервного копирования - я бы предпочел иметь дополнительные 3 ГБ статических данных, принадлежащих операционной системе, на моем резервном диске, чем обнаружил, что отсутствует один важный файл, когда я нужно было его восстановить.
Как минимум, я бы сделал резервную копию всего содержимого / etc / и большей части / var в зависимости от того, что было запущено на сервере.
Если ваша база данных mysql довольно мала, то ваш текущий подход, вероятно, приемлем, но, поскольку вам нужно заблокировать базу данных для создания дампа, это нецелесообразно для больших баз данных. Из-за этого многие люди запускают подчиненный сервер mysql, который является копией только для чтения основного сервера на резервном сервере, и используют его для создания резервных копий.
В документация mysql о том, как это сделать, довольно хорошо, я работал над этим в первый раз за вечер, без особого опыта работы с mysql.
У нас есть подчиненный сервер mysql, привязанный к dirvish, поэтому каждый день он генерирует дамп каждой отдельной базы данных, а также полную копию / var / lib / mysql (перед этим он останавливает сервер mysql)
Видеть удобный и простой способ резервного копирования mySQL и SVN на машине Ubuntu, что в значительной степени резюмирует то, что вам нужно.
Коротко;
backupninja
и rdiff-backup
. Посмотрите, что доступно, что соответствует вашим потребностям, и выберите это./etc/
(конфигурация сервера), все ваши веб-материалы, RCS-данные, база данных. Я обычно копирую и домашние каталоги, потому что у меня обычно есть куча хороших небольших скриптов, которые действительно больше нигде не подходят, и если мне нужно восстановить сервер, действительно хорошо иметь «известную» настройку оболочки, предпочтительный редактор и т. д.У меня есть резервные копии моих серверов, все, что мне нужно, зарезервировано в tar, а затем оно копируется во внешнюю резервную копию. сценарий также удалит резервные копии за 7 дней назад. Я забыл, где нашел, но не писал.
!/bin/bash
# fecha has a formated date
fecha=`date +"%d-%m-%Y"`
# Backup and gzip the directory
sudo tar cvzpf /backups/backup-$fecha.tgz --same-owner --exclude="/export/*" --exclude="/backups/*" --exclude="/home/error.log" --exclude="/proc/*" --exclude="/media/*" --exclude="/dev/*" --exclude="/mnt/*" --exclude="/sys/*" --exclude="/tmp/*" / 2>/home/error.log
# Rotate the logs, delete older than 7 days
find /backups/ -mtime +7 -exec rm {} \;