База знаний

Часто задаваемые вопросы, на которые мы уже ответили

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

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

Была ли эта инструкция полезной?