Ця стаття допоможе налаштувати планувальник завдань таким чином, щоб він створював резервні копії баз даних та даних Вашого 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.