Как работает резервное копирование
Формат хранения данных
- Отдельные пользователи сохраняются в хранилище в отдельных файлах
- Большие архивы могут быть разбиты на тома небольшого размера (по умолчанию 100Мб), что уменьшает требования к свободному месту на диске и позволяет в случае частичного извлечения данных запрашивать из хранилища только часть архивов
- В качестве формата хранения архивов использован .tgz. Это позволяет извлекать данные из архивов, используя сторонние приложения
- Мы использовали собственную утилиту isptar, которая, помимо создания архива в формате .tgz, сохраняет список файлов со смещениями. Этот список добавляется в конец архива и позволяет быстро извлекать файлы, не распаковывая весь файл, как это происходит с классическим ".tgz" архивом
Общая архитектура
Резервное копирование реализовано в виде нескольких взаимодействующих между собой приложений.
backup2/backup2_pro
Формирует очередь резервного копирования, если она пуста. Затем извлекает из нее по очереди записи и запускает для каждой из них отдельный процесс backup2/backup2_pro. Этот процесс получает настройки резервного копирования для пользователя, формирует заготовки файлов в каталоге .system (реальные данные будут сохранены в эти файлы после запуска backup2_system), а затем выполняет резервное копирование, запуская isptar
isptar
Архиватор, задача которого прочитать данные с жесткого диска и запаковать их в .tgz архивы
backup2_cp
Отвечает за работу с хранилищами (локальное, FTP, Dropbox, Amazon). Его задача - прочитать архив, сформированный isptar, и загрузить его в хранилище. backup2_cp запускается из isptar и backup2/backup2_pro (для загрузки информации о резервной копии и листинга файлов). Он так же отвечает за контроль свободного места в хранилище
backup2_system
Резервное копирование данных, не представленных в виде отдельных файлов, как то: настройки пользователя в панели, базы данных, почтовые ящики, доменные имена, web домены и т.д. backup2_system' извлекает данные и сохраняет их в виде специальных файлов в каталоге .system. backup2/backup2_pro создает необходимый набор файлов в этом каталоге. После isptar, когда доходит очередь до резервного копирования этих файлов, запускает для каждого из них процесс backup2_system
restore2/restore2_pro
Извлекает данные из архива
backup2_download
Формирует резервную копию в виде отдельного файла для скачивания. В случае, если резервная копия была сохранена в нескольких томах, они будут объединены в один
backup2_import
Позволяет импортировать архив сформированный backup2_download и загрузить его в текущее хранилище
backup2_cgi
Позволяет скачать часть архива в виде отдельного .tgz файла. Например, это может быть дамп отдельных баз данных или набор файлов и каталогов
Контроль свободного места
Общее ограничение на кол-во резервных копий по умолчанию равно 14 (для каждого пользователя, т.е у вас может быть, к примеру, всего 18 резервных копий, но каждый пользователь может находиться только в 14 из них) может быть изменено через параметр конфигурационного файла BackupCountLimit. Количество резервных копий может быть больше установленного ограничения (ограничение на количество резервных копий, по умолчанию 14 - 7 ежедневных дифференциальных и 7 полных). Так как вначале мы делаем резервную копию, а только потом удаляем старую. Старая копия может быть удалена раньше, если в хранилище недостаточно места. Но последняя полная резервная копия никогда не может быть удалена до того, как будет сделана новая.
Если пользователю не хватает места на две полные резервные копии, его резервное копирование будет завершаться с ошибкой.
Обработка ошибок
Каждый раз, когда backup2/backup2_pro начинает резервное копирование пользователя, информация о резервной копии записывается в var/ispmgr.backup.cleanup. При запуске и завершении backup2_cp --server (daemon) просматривает этот файл, и удаляет все файлы относящиеся к этим резервным копиям. В случае успешного завершения резервного копирования backup2/backup2_pro удаляют запись из var/ispmgr.backup.cleanup, сделанную при старте.
Конвертация резервных копий
Для конвертации резервных копий из формата dar, необходимо выполнить команду /usr/local/mgr5/sbin/backup2_conv. После конвертации информация о старых резервных копиях в формате dar будет перемещена в директорию old, которая расположена в рабочей директории, указанной в конфигурационном файле панели.
По умолчанию путь к старым резервным копиям после конвертации /usr/local/mgr5/var/backup/ispmgr/old
При конвертации старые файлы из хранилища удалены не будут (никогда). Вы должны удалить их самостоятельно (предварительно убедившись, что все прошло успешно), или позаботиться о том, чтобы вам хватило свободного места на хранилище.
Во время конвертации резервные копии будут разворачиваться на сервере рядом с домашними каталогами пользователей, что может вызвать проблемы с квотами