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