Москва: проверенные б/у ноутбуки с гарантией и проверкой перед оплатой
+7 906 722-94-45

Главная → Статьи → Снапшоты btrfs и Timeshift: откат Linux после обновления

Снапшоты btrfs и Timeshift: как откатить Linux после неудачного обновления

Как работают снапшоты btrfs, snapper и Timeshift, как откатить систему после неудачного обновления и почему снапшоты на том же диске не заменяют резервную копию.

Снапшоты btrfs и Timeshift: как откатить Linux после неудачного обновления

Снапшот — это мгновенный снимок состояния файловой системы, который почти не занимает места в момент создания и растёт по мере того, как данные расходятся с оригиналом. В Linux практический набор такой: снапшоты подтомов btrfs, управляющий ими snapper и графический Timeshift, который умеет работать и на обычной ext4 через rsync. Снапшот спасает после неудачного обновления за минуты — но живёт на том же диске и потому не заменяет резервную копию.

Есть ли у вас снапшоты прямо сейчас

  • Fedora использует btrfs по умолчанию (решение зафиксировано в Change-странице проекта), но автоматические снапшоты нужно включать отдельно.
  • openSUSE настраивает snapper при установке на btrfs и создаёт снапшоты вокруг операций пакетного менеджера.
  • Ubuntu по умолчанию ставится на ext4 — снапшоты возможны через Timeshift в режиме rsync либо при ручной разметке с btrfs.
  • Arch/Linux Mint — по выбору пользователя; Timeshift ставится из репозитория и работает в обоих режимах.

Проверка для btrfs: btrfs subvolume list / покажет существующие подтома и снапшоты.

Как это работает на btrfs

btrfs — файловая система с копированием при записи (CoW), поэтому снимок подтома создаётся мгновенно и изначально не дублирует данные:

sudo btrfs subvolume snapshot -r / /.snapshots/root-$(date +%F_%H%M)

Флаг -r делает снапшот доступным только для чтения — так его нельзя случайно испортить. Дальше снимок можно:

  • использовать как источник файлов — просто зайти в каталог снапшота и скопировать нужный файл;
  • сделать корневым подтомом — sudo btrfs subvolume set-default <id> /, после чего система загрузится из снимка;
  • передать на другой диск инкрементально — btrfs send -p <предыдущий> <новый> | btrfs receive /mnt/backup, что даёт дешёвую репликацию на второй носитель.

snapper: автоматика и политики очистки

snapper создаёт снапшоты по расписанию и вокруг операций пакетного менеджера, а главное — умеет их удалять по политикам (по числу, по возрасту, по пустым парам «до/после»). Без очистки снапшоты со временем съедают место на системном томе, поэтому политика — обязательная часть настройки. Основные команды: snapper list, snapper create, snapper delete, snapper rollback (последняя требует корректной раскладки подтомов, настроенной при установке).

Timeshift: когда файловая система не btrfs

Timeshift делает системные снапшоты двумя способами: через btrfs-снапшоты или через rsync с жёсткими ссылками. Важная деталь по умолчанию: Timeshift защищает системные файлы и обычно исключает домашние каталоги — то есть ваши документы в снимок не попадут, пока вы явно не измените настройки.

Откат из Timeshift выполняется из работающей системы или из live-сессии: выбираете снимок, программа показывает список изменений и применяет их.

Порядок действий после неудачного обновления

  1. Не перезагружайтесь лишний раз, если система ещё работает: сначала соберите информацию (journalctl -b -p err, вывод пакетного менеджера).
  2. Определите, что сломалось — конкретный пакет, драйвер, обновление ядра. Иногда достаточно откатить один пакет.
  3. Откатите систему: snapper rollback (openSUSE/btrfs), восстановление из Timeshift, либо загрузка в снапшот через btrfs subvolume set-default.
  4. Проверьте загрузчик. После отката ядра или системы загрузчик может ссылаться на несуществующее ядро: обновите конфигурацию загрузчика из работающей системы или из live-сессии и убедитесь, что пункт меню указывает на существующее ядро.
  5. Сохраните данные до дальнейших экспериментов: если файлы важнее системы, сначала скопируйте их на внешний носитель.

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

Почему снапшот — не резервная копия

Риск Снапшот на том же диске Резервная копия на другом носителе
Отказ SSD/HDD не спасает спасает
Ошибка обновления спасает частично (версии файлов)
Случайное удаление документа спасает, если домашний каталог в снимке спасает
Кража или пожар не спасает спасает, если копия вне дома
Порча файловой системы обычно не спасает спасает

Практический вывод: снапшоты отвечают за «откатить изменение», резервные копии — за «пережить потерю носителя». Работают они только вместе: restic или rsync на внешний диск плюс снапшоты для быстрых откатов.

Настройка, которая реально используется

  1. Включите автоматические снапшоты (snapper-таймер или расписание Timeshift) — до обновления, а не после аварии.
  2. Задайте политику очистки и раз в квартал проверяйте свободное место на системном томе.
  3. Держите снапшоты только для системы; документы защищайте отдельным механизмом с версионностью.
  4. Раз в несколько месяцев проверяйте, что снимки создаются: snapper list или список в Timeshift с актуальной датой.

Частые вопросы

Сколько места занимают снапшоты?

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

Можно ли вернуть один файл из снапшота?

Да. В btrfs-снапшоте это обычный каталог: зайдите и скопируйте файл. В Timeshift есть просмотр содержимого снимка с восстановлением отдельных путей.

Помогают ли снапшоты, если система не грузится?

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

Нужны ли снапшоты на ext4?

На ext4 нет нативных снапшотов, поэтому используется rsync-схема (Timeshift в режиме rsync): она медленнее и занимает больше места, но задачу отката решает.