Как выбрать стратегию резервного копирования для VPS

При хранении и использовании большого количества данных в цифровом окружении очень важно обеспечить доступность данных в случае сбоя. Способ обеспечения доступа к данным зависит от используемого приложения, необходимости срочного аварийного восстановления и многих других аспектов.

Данная статья расскажет о различных подходах к резервному копированию и избыточности данных. Конечно, решение стоит принимать в зависимости от ситуации, потому здесь вы не найдёте единственно верной стратегии резервирования данных. Однако примеры, приведённые в данной статье, помогут вам самостоятельно выбрать правильный подход к своему серверу.

Резервное копирование и избыточность данных: в чём разница?

Понятия избыточности и резервного копирования часто путают. Действительно, они очень похожи, однако это не одно и то же.

Избыточность данных

Избыточность данных обеспечивает немедленное аварийное восстановление в случае сбоя системы. То есть если один набор данных становится недоступным, его заменяет его копия. В результате не возникает простоев, и приложение или веб-сайт может продолжать обслуживать запросы, как будто ничего не случилось. Тем временем системный администратор может устранить возникшие проблемы и вернуть систему в рабочее состояние.

Сейчас может показаться, что избыточность данных является отличным решением для резервного копирования, но это опасное заблуждение. Избыточность не обеспечивает защиты от общесистемных ошибок или сбоев машины. Например, если у вас есть зеркальный RAID-массив (допустим, RAID 1), то если один диск выйдет из строя, другой будет по-прежнему доступен. Однако, если выйдет из строя сама машина, все данные могут быть потеряны.

Еще одним недостатком избыточности является то, что каждая операция – также и вредоносные или случайные операции – влияет на все существующие копии данных. Правильно настроенное резервное копирование позволяет вернуть данные в их прежнее состояние.

Резервное копирование данных

Как говорилось ранее, крайне важно настроить резервное копирование ценных данных (в зависимости от ситуации это могут быть данные приложения или пользователя, весь сайт или все данные машины). В случае сбоя системы или машины, а также при потере данных вы сможете восстановить, повторно развернуть или, по крайней мере, просто получить доступ к данным. Восстановление из резервной копии может стать причиной простоя приложения. Однако эта технология позволяет вернуть данные в любое состояние. Обязательно создавайте резервные копии тех данных, которые ни при каких обстоятельствах нельзя потерять.

Резервное копирование может устранять ряд проблем, связанных с данными. Например, вы можете создать резервную копию конфигурационного файла, прежде чем редактировать его, и в случае неудачной настройки можно вернуться к прежним параметрам. Это идеальный вариант для внесения небольших изменений в работу сервера. Однако в случае сбоя диска это не сработает. Потому следует настроить автоматическое резервное копирование и хранить копии в удаленном месте.

Само по себе резервное копирование не обеспечивает срочного аварийного восстановления. То есть, при сбое вы не потеряете данные, но сайт будет простаивать. Именно поэтому избыточность и резервное копирование используются вместе.

Резервное копирование на уровне файлов

Одним из наиболее известных видов резервного копирования является копирование на уровне файлов. Этот тип резервного копирования использует обычные инструменты копирования файловой системы для передачи данных на удалённое устройство.

Команда cp

Проще всего создать резервную копию при помощи команды cp. Она копирует файлы из одного места в другое. Можно смонтировать съемный диск на локальном компьютере и скопировать на него все необходимые файлы:

mount /dev/sdc /mnt/my-backup
cp -a /etc/* /mnt/my-backup
umount /dev/sdc

Команда rsync

Вместо cp лучше использовать команду rsync, которая может создавать гибкие локальные резервные копии. С помощью rsync можно выполнить описанные выше операции:

mount /dev/sdc /mnt/my-backup
rsync -azvP /etc/* /mnt/my-backup
umount /dev/sdc

Однако хранить громоздкие резервные копии в локальной файловой системе довольно проблематично. Чтобы предотвратить потерю данных, рекомендуется хранить их на физическом резервном диске или в сети.

Команда rsync может создавать удалённые резервные копии. Для этого существует другой синтаксис. Это сработает на любом хосте, к которому можно подключиться по SSH. При этом команда rsync должна быть установлена на обе машины.

rsync -azvP /etc/* username@remote_host:/backup/

Эта команда создаст удалённую копию каталога /etc и переместит её с локальной машины в каталог /backup на удалённом хосте remote_host.

Примечание: Больше о rsync можно узнать здесь.

Другие инструменты резервного копирования

Команды cp и rsync просты, однако не всегда подходят. Чтобы автоматизировать резервное копирование, нужно создавать сценарии для этих утилит.

Существуют и более сложные инструменты, которые предоставляют более широкий ряд функций.

Bacula

Bacula – это сложная гибкая программа, которая использует для резервного копирования хостов модель «клиент-сервер». Bacula настраивает каждую задачу резервного копирования как отдельный job.

Это позволяет выполнять очень тонкую настройку программы. Вы можете настроить несколько клиентов для одного хранилища, быстро изменять схему копирования, добавлять и настраивать ноды. Эта программа хорошо работает в сетевой среде, её функции можно расширять при помощи модулей.

Примечание: Чтобы узнать больше о том, как настроить и использовать сервер резервного копирования Bacula, читайте эту статью.

BackupPC

BackupPC – ещё одна популярная программа. Её можно использовать для резервного копирования систем Linux и Windows. Она устанавливается на машину или VPS, который будет выступать в качестве сервера резервного копирования. Затем этот сервер загружает данные своих клиентов с помощью методов передачи обычного файла.

Преимущество этой программы в том, что всех необходимые пакеты устанавливаются на одну централизованную машину. На клиентах нужно настроить только SSH-доступ.

Примечание: Подробнее о BackupPC – в этом руководстве.

Duplicity

Duplicity – отличная альтернатива традиционным инструментам. Эта программа использует шифрование GPG для перемещения и хранения данных, что, несомненно, имеет ряд серьёзных преимуществ.

Очевидным преимуществом использования шифрования GPG для создания резервных копий является то, что такие данные не хранятся в виде обычного текста. Только владелец ключа GPG может расшифровать их. Это обеспечивает безопасность данных.

Еще одним преимуществом является проверка хеша, которая гарантирует, что во время передачи не случилось потери данных. Это означает, что при восстановлении данных из резервной копии шансы найти повреждённые файлы гораздо меньше.

Примечание: Больше информации о Duplicity можно найти здесь.

Резервное копирование блоков

Также такой тип резервного копирования называется созданием образов. Он позволяет копировать и восстанавливать целые устройства. При резервном копировании на уровне файловой системы копируются отдельные файлы. Создание образов копирует данные блоками, бит за битом, не разделяя их на файлы.

Преимуществом такого метода резервного копирования является его скорость. Резервное копирование на основе файлов, как правило, инициирует новый сеанс передачи для каждого отдельного файла, а копирование на основе блоков будет передавать блоки, которые, как правило, больше, чем один файл.

Утилита dd

Проще всего выполнить такое копирование данных при помощи гибкой программы dd. Она выполняет побитовое копирование данных, что позволяет копировать диск в один файл или устройство без каких-либо предварительных настроек.

Самый простой способ сделать резервную копию раздела или диска с помощью dd:

dd if=/path/of/original/device of=/path/to/place/backup

Где if= задаёт устройство или файл для ввода, а of= указывает выходной файл. Очень важно помнить это различие, потому что вы можете стереть весь диск, если случайно поменяете их местами.

Чтобы скопировать раздел, в котором хранятся документы (/dev/sda3), создайте образ:

dd if=/dev/sda3 of=~/documents.img

Существуют и другие средства копирования блоков данных в Linux. С ними вы можете ознакомиться самостоятельно.

Версии резервных копий

Резервные копии создаются для того, чтобы позже восстановить их предыдущую версию. Используя дополнительные инструменты, вы можете вручную создать надёжную систему версионирования копий.

Можно создать файл для резервного копирования, прежде чем редактировать его.

cp file1 file1.bak
nano file1

Этот процесс можно автоматизировать, создавая скрытые файлы с временными метками всякий раз, когда вы редактируете файл. К примеру, вы можете поместить в файл ~/.bashrc следующий код:

nano() { cp $1 .${1}.`date +%y-%m-%d_%H.%M.%S`.bak; /usr/bin/nano $1; }

Теперь при вызове команды nano будет автоматически создаваться резервная копия.

Однако такой подход не очень производителен, поскольку быстро переполняет диск. Иногда лучше копировать файлы вручную.

Существует альтернативный вариант – система контроля версий git.

Можно создать репозиторий git в домашнем каталоге:

cd ~
git init

Вероятно, вам придётся отладить настройки программы, чтобы исключить некоторые файлы. Затем нужно добавить содержимое каталога и создать коммит:

git add .
git commit -m "Initializing home directory"

После этого файлы можно отправить в удалённое хранилище:

git remote add backup_server git://backup_server/path/to/project
git push backup_server master

Эта система не очень подходит для резервного копирования, однако её можно использовать в связке с другими инструментами.

Примечание: Чтобы узнать о git больше, читайте следующие статьи:

Tags: , , , , , ,

Добавить комментарий