Уважаемые админы, хочу в очередной раз напомнить вам о необходимости делать бекапы своих проектов, причем желательно ежедневных.
От этого зависит ваша счастливая жизни в дальнейшем, не доводите до седин не себя не своихпользователей.
К чему бы все это? Вчера ночью восстанавливал форум над которым работал еще в 2012 году. Мне отписал администратор этого форума, что его то-ли взломали, то ли при каком то обновлении все полетело. Исправить все можно было только восстановлением бекапа. Естественно не какой бекап не делался настройками панели, и востановить форум можно было только за 2012 год, когда я его и делал. Что тех поддержка хостинга и сделала, востановилка клиенту форум за 2012 год, представьте его посидевшую голову.
Хорошо, что у меня есть дурная привычка вставлять свой скрипт бекапа на все ресурсы над которыми я работаю по серьезному - то есть настраивая проект и модули в панеле vps. Благодаря этому бекап все же делался, только в мои папки, хотя я естественно за полтора года об этом и забыл уже, и все в течении 2-3 часов восстановили, все довольны. НО...
Это к сожалению не единичный случай, почему-то многие не заботятся о бекапах своих проектов и в итоге рискуют потерять свое любимое детище. В связи с этим настоятельно рекомендую делать бекапы, следить, чтобы они делались хотя бы еженедельно, если проект большой то и ежедневно. И тогда и вам смогут помочь все восстановить без потерь и вы не опустите руки.
Для тех кто не знает как сделать бекапы, можно обратится к своему хостеру, чтобы все настроили.
Или сделать самому по простому скрипту:
Для этого создать файл backup.sh в unix формате и вставить туда
Code:
#!/bin/sh
MYSQLU=пользователь базы данных
MYSQLP=пароль от этой базы
MYSQLD=путь куда будет сохранятся бекапа БД, например /var/backup/mysql/ естественно по этому пути надо создать папку и расшарить 755
FILEW=здесь указать какие файлы бекапить, например /var/www/имя_пользователя/data/www в данном случае это все домены
FILED=здесь указываем путь куда будет складываться бекап, например /var/backup/file/
echo "Backup DataBase:"
databases=(`echo 'show databases;' | mysql -u${MYSQLU} -p${MYSQLP} | grep -v ^Database$ | grep -v ^information_schema$ | grep -v ^mysql$ | grep -v ^performance_schema$`)
for d in "${databases[@]}"; do
if [[ $d != *'temp'* && $d != *'tmp'* && $d != *'test'* && $d != *'file'* && $d != *'default'* ]]
then
if [ -d ${MYSQLD}${d} ]
then
echo " " > /dev/null
else
mkdir -p ${MYSQLD}${d}
fi
FILES=${MYSQLD}${d}"/"${d}"-"`date "+%Y-%m-%d-%H-%M"`".gz"
mysqldump -u${MYSQLU} -p${MYSQLP} ${d} | gzip -c > ${FILES}
echo " "${d}" ("`du -sh ${FILES} | awk '{ print $1}'`")"
fi
done
echo "Backup Files:"
for d in $( ls ${FILEW}); do
if [[ $d != *'temp'* && $d != *'tmp'* && $d != *'test'* && $d != *'file'* && $d != *'ftp'* && $d != *'default'* ]]
then
if [ -d ${FILED}${d} ]
then
echo " " > /dev/null
else
mkdir -p ${FILED}${d}
fi
FILES=${FILED}${d}"/"${d}"-"`date "+%Y-%m-%d-%H-%M"`".tar.gz"
tar cpfz ${FILES} ${FILEW}${d} > /dev/null 2>&1
echo " "${d}" ("`du -sh ${FILES} | awk '{ print $1}'`")"
fi
done
Это самый простой код который бекапить БД и файлы по крону, как установите в cron так и будет.
Далее сохраняем и заливаем на сервер примерсюда /usr/local/bin/backup.sh
Теперь в кроне ставим исполнение скрипта, например /bin/bash /usr/local/bin/backup.sh >/dev/null 2>&1
Далее запускаем крон, ждем и проверяем папки на наличие в нем бекапа. Если все работает значит все хорошо, если нет, нужно смотреть не накосячили ли с путями внутри скрипта.
Надеюсь этот небольшой Ликбез вам поможет и каждый админ позаботиться о своем продукте заранее.