Искать в Базе знаний

Создание сжатых бекапов

Регулярное резервное копирование подразумевает не только создание копий, но и учет дискового пространства: со временем бекапы занимают все больше и больше места. Для экономии дискового пространства стоит сжимать резервные копии. Предлагаем решить задачу с помощью двух инструментов — Ice Storage и утилиты tar.
Ice Storage — дополнительное дисковое пространство на HDD. Мы часто рекомендуем его для хранения архивов и работы веб-приложений, не требующих высокой производительности, однако вы можете использовать Ice Storage для любых своих целей, в нашем случае — для хранения резервных копий.
Каждый storage имеет уникальное имя, оно соответствует имени устройства на боксе (vdb, vdc, vdd и так далее). При этом у каждого хранилища на сервере есть уникальный ID.
Для подключения Ice Storage в одноименном разделе нажмите кнопку «Добавить», выберите желаемый объем и подтвердите выполнение операции. Обратите внимание, что при подключении Ice Storage бокс будет перезагружен.
Ice Storage сразу после подключения будет примонтирован к боксу в директорию /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

Создание и хранение сжатых резервных копий в Ice Storage

На практике рассмотрим, как с помощью утилит tar и mysqldump организовать регулярное резервное копирование.
  • Создаем папки для хранения резервных копий файлов и баз данных в Ice Storage:
    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. Не забудьте изменить путь к вашему Ice Storage в задании.
Во втором задании средствами утилиты 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.
2005–2025 ООО «СПРИНТХОСТ.РУ»
Входит в Реестр аккредитованных ИТ-компаний
и Реестр провайдеров хостинга
Лицензия №162552