Самое простое если у нас только один сайт:
1. Заходим по ssh на сервак (желательно не под root)
2. Создаем папки для бэкапов у меня она такая, можно где угодно ее создать, главное чтобы веб-серверу не доступна была, а то их можно будет скачать =)
mkdir -p /var/www/backups/mysql3. Выполняем
crontab -e (должен открыться редактор)
4. В самый конец добавляем следующие строки
# run backup at 12:00 a.m every week
0 0 * * 1 tar -zcf /var/www/backups/dump-$(date +\%d-\%m-\%Y).tgz /var/www/html/example.ru/* && echo "Backup successful: $(date)"
# run backup at 12:30 a.m every day
30 0 * * * mysqldump DBNAME -u DBUSER -pDBPASSWORD | gzip > /var/www/backups/mysql/backup-`date +\%Y-\%m-\%d`.sql.gz && echo "DB Backup successful: $(date)"
5. Сохраняем результат (для VIM нужно набрать :wq) для nano вроде ctrl+x нажать (зависит от стандартного редактора)
Первая команда создает архив всех файлов (если не нужна то можно не юзать)
Вот такая конструкция
$(date +\%d-\%m-\%Y).tgz позволяет нам создавать файл в названии которого будет текущая дата dump-10-11-2016.tgz
Если tar отработала без ошибок то выполнится то что указано после &&
Если запустить прям в консоли то все должно сработать и эхо будет видно, в случае крона результат отправляется на почту текстовым сообщением
Вторая команда это вызов mysqldump, если выполнить mysqldump DBNAME -u DBUSER -pDBPASSWORD (
Важно между -p и паролем нет пробела!) то результат будет выведен прямо в консоль =), в нашем случае мы конвейером отправляем сразу в gzip и пишем в файл уже сжатый sql
Ах, да вот еще
странные на первый взгляд цифры перед командой
мин часы день месяца месяц день недели
30 0 * * *
Звездочка значит каждый день(недели/месяца) файлы я сохраняю в полночь каждый понедельник — ставлю 1
UPD:Важно: Через какое-то время можно очень сильно засорить хостинг =) поэтому рекомендую дописать такую команду
find /var/www/backups/ -type f -name "*.tgz" -not -ctime -30 -deleteона найдет все архивы старше 30 дней и удалит запускать можно раз в месяц ну или также раз в неделю
UPD2:У себя на физическом сервере чтобы одни и те же файлы не бэкапить, но в тоже время иметь ежедневные дампы за длительный срок (2-3 года) я использую утилиту zbackup очень крутая вещь, в плане экономии места на серваке очень удобно если на сервере 100+ сайтов и все на Joomla =) то можно сильно сэкономить за счет того что все файлы самой CMS во всех сайтах одинаковы, zbackup эту оптимизацию делает самостоятельно!