Резервные копии обычно кажутся скучной темой ровно до того момента, пока не пропадут фотографии, документы, база сайта или весь домашний сервер. Тогда скука мгновенно превращается в холодный пот: диск не читается, обновление сломало систему, папку удалили не туда, а нормального плана восстановления нет.
На Хабре как раз вышел полезный лонгрид про связку Btrfs + btrbk. Это не облачный сервис, не коммерческий агент и не программа с подпиской. Это файловая система Linux и небольшая утилита, которая автоматизирует снимки, перенос копий и очистку старых версий.
Главная мысль простая: если ваши данные уже живут на Linux, бэкап можно сделать быстрым, почти незаметным и бесплатным. Но есть важное «но»: снимок на том же диске — ещё не полноценный бэкап.
Почему обычные копии часто раздражают
Многие начинают с rsync, архиваторов или похожих инструментов. Они хорошие, проверенные и часто выручают. Но у них есть общий минус: они смотрят на файлы.
Чтобы понять, что изменилось, программе приходится обходить дерево каталогов. На маленькой папке это не проблема. На сервере с миллионами файлов такой обход может занять десятки минут ещё до того, как начнётся реальное копирование.
Есть и другая неприятность. Переименовали большой каталог — для обычного пофайлового подхода это часто выглядит как «появились новые файлы». Изменился один байт в большой базе данных — в копию может снова уйти огромный файл. В итоге «инкрементальный» бэкап на живых данных иногда ведёт себя почти как полный.
Btrfs решает задачу иначе. Она работает не только с файлами, а с блоками и метаданными. Поэтому переименование большой папки может превратиться не в сотни гигабайт трафика, а в несколько килобайт изменений.
Что даёт Btrfs
Btrfs умеет делать снимки подтомов. Снимок — это точка во времени: состояние системы, домашней папки или нужного раздела на конкретный момент.
Важно, что он создаётся почти мгновенно. Данные не копируются целиком. Пока ничего не изменилось, оригинал и снимок ссылаются на одни и те же блоки. Меняться место на диске начинает только после новых записей.
Для обычного пользователя это значит две вещи. Во-первых, можно быстро вернуться к состоянию «до обновления». Во-вторых, можно достать один случайно удалённый файл из старого снимка, не разворачивая весь архив.
Но снимок нельзя путать с бэкапом. Если он лежит на том же диске, а диск умер, снимок погибнет вместе с ним. Поэтому правильная схема — хранить копию ещё и на другом носителе: внешнем диске, NAS, домашнем сервере или удалённой машине.
Зачем нужен btrbk
Команды Btrfs мощные, но вручную жить с ними неудобно. Сегодня создал снимок, завтра забыл, через месяц диск забит старыми копиями. btrbk как раз убирает эту рутину.
Он делает три главные вещи: создаёт снимки по расписанию, передаёт их на локальный или удалённый Btrfs-диск и удаляет старые версии по заданным правилам. Например, можно хранить 7 дневных, 4 недельных, 3 месячных и 1 годовую копию. Человек один раз описывает политику, дальше этим занимается утилита.
Передача строится на механизме btrfs send/receive. Первый прогон отправляет базовый снимок целиком. Потом уходят только изменения между вчерашним и сегодняшним состоянием. Поэтому ежедневный бэкап большого /home может занимать минуты, если за день реально изменилось немного данных.
Для домашнего ПК это удобно с внешним диском. Для сервера — с отдельным накопителем и удалённой копией по SSH. Для маленькой домашней лаборатории это уже почти взрослая система резервного копирования, но без лицензий и личных кабинетов.
Что особенно полезно для сервера
В статье хорошо показана идея «pull-бэкапа»: не рабочий сервер отправляет копии наружу, а защищённый бэкап-сервер сам приходит и забирает снимки.
Зачем такая осторожность? Если основной сервер взломают или он поймает шифровальщик, у него не должно быть ключа от хранилища резервных копий. Иначе злоумышленник получит доступ не только к рабочим данным, но и к запасному выходу.
При аккуратной настройке SSH-ключ можно ограничить так, чтобы он умел только читать нужные снимки. Это уже не игрушка «для дома», а нормальная сисадминская привычка: бэкап должен пережить не только поломку диска, но и ошибку человека или компрометацию машины.
Где есть подводные камни
Главное ограничение очевидное: для красивой схемы со снимками и send/receive нужна Btrfs. Если у вас ext4 или XFS, связка не заработает магически поверх старой файловой системы. Придётся переносить данные или использовать другие инструменты.
Второй момент — базы данных и активно пишущие сервисы. Снимок файловой системы быстрый и атомарный, но приложение может держать часть состояния в памяти. Для важных баз лучше использовать режим резервного копирования, короткую паузу или ночное окно, когда нагрузка минимальна.
Третий момент — восстановление. У btrbk нет волшебной кнопки «вернуть всё как было». Это осознанный подход: утилита создаёт и разносит снимки, а восстановление делается руками через Btrfs. Для новичка звучит страшновато, но зато меньше шансов случайно стереть живые данные одной неудачной кнопкой.
И ещё: если нужен откат системы после плохого обновления, стоит посмотреть на grub-btrfs. Он добавляет снимки в меню загрузчика GRUB. Сломалось обновление — выбираете старый снимок и загружаетесь с него. Для Linux-энтузиаста это очень приятная страховка.
Кому стоит попробовать
Связка Btrfs + btrbk особенно интересна тем, кто держит домашний сервер, NAS, VPS, Linux-ПК с важными файлами или несколько машин в домашней сети. Если данные ценны, а платить за очередной сервис не хочется, это честный путь: open-source, локальный контроль и понятная механика.
Я бы не продавал это как «нажал и забыл». Бэкап, который никто не проверял восстановлением, — это не бэкап, а надежда. Но если один раз спокойно настроить схему, сделать пробное восстановление и понять, где лежат копии, уровень спокойствия резко меняется.
Хороший бэкап не должен быть героическим подвигом. Он должен незаметно работать каждый день и пригодиться в тот самый плохой момент.
Источник: Btrfs и btrbk: лёгкий и быстрый инкрементальный бэкап сервера и домашнего ПК
Похожие статьи
Если вам интересны бесплатные инструменты для бэкапа, Linux и домашнего сервера, посмотрите также: