Основы резервного копирования данных на сервере
Простое описание отличий в видах резервного копирования: полного, инкрементного и дифференциального. Разбираемся, когда какой вид бэкапа лучше подойдет.
Основы резервного копирования
Подход к резервному копированию зависит от того, какие данные нужно сохранить и как часто делать бэкапы. Существует три наиболее распространённых подхода к резервному копированию: полное, инкрементное и дифференциальное.
Полное резервное копирование (англ. full backup) — это создание копии всех файлов проекта на внешний носитель или другой сервер. Это самый простой метод, но он требует большого объёма памяти жёстких дисков для хранения информации, а сам процесс копирования занимает много времени. Вариацией метода является идея снимков томов (англ. volume shadow copy): в заданные моменты времени на сервере создаются копии файлов. Метод позволяет сохранять несколько версий данных и восстанавливать их в том состоянии, как они находились на определённую дату.
Инкрементное резервное копирование (англ. incremental backup) создает копию только тех данных, которые изменились с момента последнего резервного копирования. Сохранение только изменённых файлов позволяет экономить место на жёстком диске, но в случае потери данных требует последовательного применения изменений, что занимает время.
Дифференциальное резервное копирование (англ. differential backup) отличается тем, что создаёт копии файлов, которые были изменены с момента последней полной резервной копии, независимо от того, были ли они раньше включены в предыдущие дифференциальные копии. Это требует больше данных для хранения, но в то же время проще для восстановления — достаточно иметь одну полную копию и провести изменения относительно неё. В инкрементном бэкапе для решения той же задачи потребуется выполнить всю цепочку изменений.
Серверные приложения для резервного копирования данных
В случае потери данных на сервере программа восстановления данных получает доступ к копиям данных на удалённом сервере и восстанавливает их на основной машине. Популярные коммерческие системы резервного копирования — Veeam, Commvault, Veritas, Dell EMC и IBM.
Существует также несколько бесплатных серверных приложений, которые могут использоваться для резервного копирования данных на удалённом сервере. Например, BackupPC , Amanda, Duplicati применяются как на Linux-серверах, так и локально на Windows и macOS-машинах.
Все эти программы обладают характерными функциями, включая сжатие данных, шифрование и расписание резервного копирования. Однако базовую реализацию несложного бэкапа можно сформировать даже с помощью утилиты rsync
.
Rsync (сокращение от английского "remote synchronization") — утилита для синхронизации файлов и каталогов между различными компьютерами или различными директориями на одном и том же компьютере. Для конкретики рассмотрим на её примере, как можно реализовать процесс бэкапа.
При полном бэкапе мы копируем все данные с исходного сервера на резервный. Для этого используем ключ -a
, который указывает, что нужно скопировать все файлы и сохранить их атрибуты.
rsync -a /путь/к/исходной_папке /путь/к/резервной_папке
При дифференциальном копировании мы переносим только новые файлы и те, что были изменены с момента последней полной копии. Для этого указываем ключи -a
и --delete
, чтобы исключить при переносе файлы, которых нет на исходном сервере.
rsync -a --delete /путь/к/исходной_папке /путь/к/резервной_папке
Наконец, при инкрементном копировании мы задействуем уже не только исходный проект, но и предыдущий бэкап, если такой имеется. Для этого мы указываем ключ --link-dest, чтобы указать, где находится предыдущая копия.
rsync -a --link-dest=/путь/к/предыдущей_копии
/путь/к/исходной_папке /путь/к/резервной_папке
Уточним, что здесь для краткости мы не учитываем прочие аспекты rsync и другие необходимые ключи — для полноценной работы с утилитой лучше ознакомиться с документацией.
Выбор метода резервного копирования
Наиболее популярные приложения для резервного копирования обычно поддерживают все перечисленные методы резервного копирования. Выбор метода зависит от конкретной ситуации и требований к защите данных.
Вот несколько критериев, которые помогут определить, какой метод бэкапа лучше выбрать:
- Объем данных: полное резервное копирование занимает значительное время на обработку и занимает много места на диске. Если вы работаете с большим объем данных, в которых не происходит частых изменений, лучше выбрать инкрементный бэкап.
- Частота изменения данных: полное резервное копирование может не успевать за скоростью изменения данных. В этом случае стоит рассмотреть инкрементный или дифференциальный варианты.
- Время восстановления / бюджет на хранение: если данных относительно немного, а время восстановления критично, полное резервное копирование позволит достаточно быстро восстановить данные за один заход. Если время восстановления не так ценно, как издержки хранения данных на сервере, лучше рассмотреть инкрементный подход. Промежуточный вариант в этом сравнении — дифференциальный бэкап: хранит больше данных, чем инкрементный, но обрабатывается быстрее.
Для тех, кто хочет упростить процедуру резервного копирования и восстановления данных, в панели ispmanger мы сделали процесс максимально простым для освоения. Для резервного копирования можно использовать популярные инструменты Google Drive и Dropbox, серверы Amazon S3 или S3-совместивное хранилище, а так же просто FTP/SFTP-серверы или локальный каталог. Вся необходимая информация представлена в документации панели. Попробовать ispmanager на своём linux-сервере можно бесплатно.