Вопрос или проблема
У меня есть раздел корня Btrfs с подтомом @
и подтомом @home
, и я делаю автоматические снимки во время обновлений и плановые снимки с помощью timeshift, которые сохраняются на одном и том же диске. Это здорово, но я хочу добавить дополнительную надежность на случай отказа диска.
В моей последней настройке на Debian я использовал файловую систему ext4 и сохранял свои резервные копии rsync timeshift на внешнем диске.
Как я могу сделать что-то подобное, т.е. резервное копирование на внешний диск, при этом продолжая делать снимки на основном устройстве?
В дополнение к системному устройству, которое является SSD на 1 ТБ, отформатированному как Btrfs, у меня есть HDD на 2 ТБ, который в настоящее время отформатирован с двумя разделами NTFS, поскольку я также загружаю Windows. Теперь я готов полностью перейти на файловую систему Linux на этом диске, но не знаю, как обрабатывать резервное копирование диска с корнем. Я думал сделать образ диска на HDD с помощью dd
, но если я это сделаю, то (a) потеряю дополнительный ТБ хранилища, если я правильно понимаю, как работает dd
, и (b) не знаю, как восстановить из образа. В идеале я хотел бы иметь раздел Btrfs на втором диске только для резервных копий устройства с корнем и второй раздел (например, ext4 или NTFS) только для хранения дополнительных данных.
Суть моего вопроса: Как я могу упростить резервное копирование моего уже “снимающего” раздела корня (и также знать, как восстановить из него)?
Это решение, которое я придумал для такого рода требований: https://github.com/ceremcem/smith-sync
Я подготовил свои собственные скрипты для резервного копирования на целевой диск: https://github.com/ceremcem/smith-sync-new-target
Вот общая система резервного копирования, которую я использую: https://github.com/ceremcem/erik-sync
Этот процесс довольно сложный и требует глубоких знаний. Короче говоря, этот скрипт выполняет следующие действия:
- Отложить любые автоматические действия приостановки, чтобы не прерывать процесс резервного копирования.
- Отправить все снимки на целевой диск.
- Создать новую rootfs на целевом диске, используя последние снимки.
- Соответственно изменить необходимые файлы, такие как $target/rootfs/etc/fstab, …/etc/crypttab и т.д.
- Смонтировать загрузочный раздел, скопировать на него самые последние загрузочные файлы.
- Обновить загрузчик GRUB в окружении
chroot
.
Теперь наш целевой диск (резервный диск) является точной копией нашей текущей системы, без использования команды dd
. Вы можете создать любые дополнительные разделы на целевом диске в зависимости от ваших нужд, это не нарушит процесс резервного копирования.
Перемещено из редактирования-вопроса:
Решение, которое я придумал, использует btrbk
, который является единственным perl-скриптом, который управляет снимками и автоматически отправляет их на другой диск. Я задокументировал настройку на своем аккаунте github здесь.
btrbk
работает с помощью единого конфигурационного файла для указания местоположений снимков и резервных копий, а также политик хранения. Я планирую процесс резервного копирования с помощью crontab. Настроить это для начинающих немного сложно, но гораздо более полезно в процессе обучения, чем просто использовать snapper или timeshift.
Ответ или решение
Лучшая стратегия резервного копирования файловой системы Btrfs
Ваша текущая настройка с использованием Btrfs на корневом разделе вместе с субтомами @
и @home
хорошо справляется с автоматическими снимками и резервными копиями, однако добавление внешнего резервного копирования обеспечит дополнительную степень надежности. Рассмотрим несколько стратегий, которые помогут вам организовать процесс резервного копирования, чтобы обеспечить надежность и восстанавливаемость данных.
1. Структурирование диска
На втором диске объемом 2 ТБ вы можете разделить пространство для резервного копирования и хранения данных. Рекомендуется отформатировать его в файловую систему Btrfs, так как это обеспечит гибкость в управлении моментальными снимками и высокой эффективностью использования. Вы можете сделать следующие разделы:
/dev/sdb1
– Для резервного копирования корневой файловой системы (формат: Btrfs)/dev/sdb2
– Для хранения overflow-данных (например, ext4 или NTFS, в зависимости от ваших нужд в совместимости с Windows)
2. Использование Btrbk
Рекомендую использовать btrbk
— это скрипт, позволяющий управлять моментальными снимками и отправлять их на другой диск. Он будет полезен в вашем случае, так как позволит настроить автоматическое резервное копирование ваших снимков в выбранную вами директорию.
Настройка btrbk
-
Установка:
Установитеbtrbk
из репозитория вашей дистрибуции:sudo apt install btrbk
-
Создание конфигурационного файла:
Создайте файл конфигурации, например,/etc/btrbk/btrbk.conf
:snapshots = /mnt/btrfs/@snapshots backup = /mnt/btrfs_backup send = /path/to/your/external/backup retention = 6 snapshots
-
Настройка резервного копирования:
Вы можете настроитьbtrbk
так, чтобы он использовал одну команду для создания снимков и резервного копирования их на ваш второй диск:# Создание и отправка снимка btrbk send
-
Запуск по расписанию:
Чтобы автоматизировать процесс резервного копирования, добавьте задачу вcron
:crontab -e
Вставьте следующую строку для ежедневного резервного копирования:
0 2 * * * /usr/bin/btrbk send
3. Восстановление данных
В случае, если потребуется восстановление данных, btrbk
предоставляет простой способ отправки уже существующих снимков обратно на систему. Вы можете использовать команду:
sudo btrbk receive
При этом не забывайте, что для восстановления вам может понадобиться загрузочный раздел с GRUB, где хранятся конфигурационные файлы.
4. Поддержка системы
Обращайте внимание на возможность ручного тестирования восстановления, периодически проверяя целостность ваших резервных копий и восстанавливая данные на тестовую машину. Это поможет убедиться в том, что ваш процесс работает корректно.
Заключение
С добавлением внешнего резервного копирования с использованием btrbk
, а также организуя файл под Btrfs на втором диске, вы создаете надежную систему защиты данных. Не забывайте, что управление резервным копированием следует периодически пересматривать и адаптировать под ваши актуальные нужды, гарантируя тем самым высокую эффективность и безопасность данных.