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

Розглянемо приклад запису:

30 2 * * 1 root tar -czf /root/backups/sites.tar.gz /var/www

Цей рядок буде архівувати директорію /var/www, де в більшості конфігурацій розміщені всі дані сайтів, і створювати архів у /root/backups. Команда виконуватиметься по понеділках о 2:30. Однак цей метод створення резервних копій даних сайту має суттєвий мінус: бекапи створюватимуться доти, доки на ВПС не закінчиться місце на жорсткому диску. Для вирішення цієї проблеми необхідно написати скрипт, який дозволить зберігати не більше 4 копій архівів.

Бекап даних сайтів

Отже, для запуску бекапа даних сайту заходимо на ВПС за допомогою SFTP від імені користувача root. У робочій директорії (/root) створюємо папку ./backup/www-backup, в якій будуть розміщені резервні копії. У папці /root/backup створюємо скрипт, який запускатиме планувальник cron для створення резервних копій. Створюємо новий файл, називаємо його www-backup.sh, відкриваємо текстовим редактором і записуємо в нього сам код скрипту:

#!/bin/bash
cd /root/backup/www-backup
rm ./www-dump-3.tar.gz
mv www-dump-2.tar.gz www-dump-3.tar.gz
mv www-dump-1.tar.gz www-dump-2.tar.gz
mv www-dump-0.tar.gz www-dump-1.tar.gz
tar -czf www-dump-0.tar.gz /var/www 

Зверніть увагу, що наприкінці скрипту потрібна наявність відступу.

Або качаємо готовий скрипт www-backup.sh ЗВІДСИ і заливаємо в /root/backup. Даний скрипт дозволяє нам створити резервні копії даних сайту та зберігати 4 версії бекапа, проте він не архівує бази даних.

Бекап баз даних

Для архівації бази даних створюємо файл mysql-backup.sh в директорії /root/backup. У цьому файлі розміщуємо наступний скрипт:

#!/bin/bash
cd /root/backup/sql-backup
rm ./sql-dump-3.gz
mv sql-dump-2.gz sql-dump-3.gz
mv sql-dump-1.gz sql-dump-2.gz
mv sql-dump-0.gz sql-dump-1.gz
mysqldump –opt -uroot -p yoursqlpassword –all-databases | gzip -c -9 > /root/backup/sql-backup/sql-dump-0.gz

Зверніть увагу, що наприкінці скрипту потрібна наявність відступу.

Також можна завантажити готовий скрипт mysql-backup.sh ЗВІДСИ і залити в /root/backup.
Зверніть увагу, що необхідно замінити yoursqlpassword на ваш root пароль для доступу до БД.

Результат створення скриптів

Створення 2-х різних скриптів для бекапа сайтів та баз даних дає нам можливість запускати дані скрипти у різні інтервали часу. Тобто якщо зазвичай достатньо створювати резервні копії сайту раз на тиждень, то бази даних бажано архівувати щодня.

Після того, як у директорії /root/backup створені скрипти для створення бекапів бази даних та файлів сайту (www-backup.sh та mysql-backup.sh), ми додаємо завдання на архівацію в crontab-файл. Відкриваємо /etc/crontab та дописуємо наступні рядки:

30 2 * * 1 root sh /root/backup/www-backup.sh
30 3 * * * root sh /root/backup/mysql-backup.sh

Як бачите, архівування файлів сайту буде проводитись о 2:30 по понеділках, а бекап бази даних щодня о 3:30. Ви можете змінити інтервали створення бекапів самостійно під ваші потреби. Також хочемо звернути увагу, що скрипти залишають 4 останні версії архівів.

Після додавання перезапускаємо демон cron для застосування змін. Для ОС Debian та Ubuntu використовуйте команду service cron restart, для ОС Fedora та CentOS — команду service crond restart.