Регулярное резервное копирование подразумевает не только создание копий, но и учет дискового пространства: со временем бекапы занимают все больше и больше места. Для экономии дискового пространства стоит сжимать резервные копии. Предлагаем решить задачу с помощью двух инструментов — подключения дополнительного диска и утилиты tar.
Дополнительный диск — отдельное дисковое пространство на NVMe. Вы можете использовать его для любых своих целей, когда тариф менять ещё рано, но требуется больше места. Разберем, как его настроить для хранения резервных копий.
Каждый диск имеет уникальное имя, оно соответствует имени устройства на боксе (vdb, vdc, vdd и так далее). При этом у каждого хранилища на сервере есть уникальный ID.
Для подключения дополнительного диска в одноименном разделе нажмите кнопку «Добавить», выберите желаемый объем и подтвердите выполнение операции. Обратите внимание, что при подключении диска бокс будет перезагружен.
Дополнительный диск сразу после подключения будет примонтирован к боксу в директорию
/mnt/sprintbox_storage/storage-%ID%. Увидеть точный путь можно с помощью команды lsblk:NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 366K 0 rom vda 254:0 0 32G 0 disk └vda1 254:1 0 32G 0 part / vdb 254:16 0 32G 1 disk └vdb1 254:17 0 32G 1 part /mnt/sprintbox_storage/storage-123
Создание и хранение сжатых резервных копий на дополнительном диске
На практике рассмотрим, как с помощью утилит tar и mysqldump организовать регулярное резервное копирование.
- Создаем папки для хранения резервных копий файлов и баз данных на дополнительном диске:
mkdir /mnt/sprintbox_storage/storage-123/files-backup-folder mkdir /mnt/sprintbox_storage/storage-123/db-backup-folder
- Открываем планировщик задач Cron:
crontab -e
- Добавляем в crontab задания:
30 0 * * * tar -czf /mnt/sprintbox_storage/storage-123/files-backup-folder/backup-$(date +%y%m%d).tar.gz \ --exclude=/home --exclude=/media --exclude=/dev --exclude=/mnt --exclude=/proc --exclude=/sys --exclude=/tmp / 30 0 * * * mysqldump --opt -u db_user -p password db_name > \ /mnt/sprintbox_storage/storage-123/files-backup-folder/database-backup-$(date +%y%m%d).sql
Оба задания будут выполняться каждый день, в 00:30. Рассмотрим каждое из заданий подробнее.
В первом задании средствами утилиты
tar создается архив со всеми каталогами и файлами виртуальной машины, исключая папки /home, /media, /dev, /mnt, /proc, /sys, /tmp. По желанию, вы можете удалить или добавить необходимые каталоги в список исключений, используя ключ --exclude=/folder_name. Не забудьте изменить путь к вашему диску в задании.Во втором задании средствами утилиты
mysqldump будет создаваться резервная копия базы данных db_name. Измените путь для размещения резервной копии в задании на необходимый, а также вместо db_user, db_name и password укажите актуальные значения имя пользователя базы данных, название базы данных и пароль.Обратите внимание на формат названий файлов:
backup-$(date +%y%m%d).tar.gz database-backup-$(date +%y%m%d).sql
Такой формат позволяет указать в имени резервной копии дату создания (год-месяц-день). Названия бекапов будут выглядеть следующим образом:
backup-19-09-15.tar.gz database-backup-19-09-15.sql
В данной инструкции мы рассмотрели возможность создания и хранения резервной копии сайта в виде архива. Если вы заинтересованы в создании несжатых резервных копий для быстрого восстановления, то обратите внимание на инструкцию по созданию бекапов с помощью утилиты rsync.