Все об Arch Linux

Arch Linux будет тем, что вы из него сделаете!

Снапшот перед обновлением: привычка, которая спасает

Одно pacman -Syu может сломать графический стек, звук или ядро — и это не редкая история, а обычный день Arch-пользователя. Снапшот перед обновлением превращает поломку из «переустановки на полдня» в «минуту на откат». Ниже — как сделать эту привычку автоматической: на btrfs с snapper и на ext4 с Timeshift.

Почему снапшот перед обновлением — это гигиена, а не паранойя

Arch Linux обновляется часто и целиком. pacman -Syu тянет не один пакет, а всю систему: ядро, драйверы, библиотеки, графический стек. Любой из них может принести регрессию. Типичные сценарии:

  • обновление ядра, а модули DKMS не пересобрались — не грузится Wi-Fi или видеодрайвер;
  • новая версия Mesa или драйвера NVIDIA ломает графику — чёрный экран после загрузки;
  • обновление PulseAudio или PipeWire — пропал звук;
  • новая версия systemd или загрузчика — система не стартует.

Проблема не в том, что Arch «нестабильный». Проблема в том, что обновление — это всегда риск, и ты не знаешь заранее, какой пакет его принесёт. Снапшот — страховка на случай, если риск реализовался. Создание занимает минуту, откат — минуту. Дешевле не бывает.

Как сделать снапшот за минуту на btrfs с snapper

Если система на btrfs и snapper уже настроен (как в статье про установку с btrfs-снапшотами), снапшот перед обновлением — одна команда:

sudo snapper -c root create -d "before update"

Флаг -d добавляет описание, чтобы в списке было видно, зачем снимок сделан. Проверить, что всё на месте:

snapper list

В выводе увидишь номер снапшота, дату, тип и описание. Перед обновлением создал — после обновления, если всё хорошо, можно удалить:

sudo snapper -c root delete <номер>

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

Как включить автоматические снапшоты перед pacman

Ручная команда — это хорошо, но привычка должна работать, даже когда ты забыл. Для этого pacman умеет вызывать хуки до и после операций. Схема простая: кладёшь файл в /etc/pacman.d/hooks/, и pacman выполняет команду перед обновлением.

Пример хука, который делает снапшот перед каждой операцией pacman:

[Trigger]
Operation = Upgrade
Operation = Install
Operation = Remove
Type = Package
Target = *

[Action]
Description = Creating snapshot before pacman operation
When = PreTransaction
Exec = /usr/bin/snapper -c root create -d "before pacman"

Файл называется, например, /etc/pacman.d/hooks/00-snapshot.hook. После этого каждый pacman -Syu сам создаёт снапшот — тебе не нужно ничего помнить.

Готовое решение — пакет snap-pac. Он ставит такие хуки за тебя и делает пары снапшотов: до и после каждой операции. Плюс — откат к состоянию «до обновления» одной командой. Минус — снапшотов становится много, и за ними нужна чистка.

Как делать снапшоты на Timeshift без командной строки

Не все хотят возиться с snapper и хуками. Для таких случаев есть Timeshift — программа с графическим интерфейсом, которая работает и на btrfs, и на ext4. На ext4 она использует rsync-копии, на btrfs — настоящие снапшоты.

Установка:

sudo pacman -S timeshift

Дальше всё в GUI: выбираешь тип снапшота (btrfs или rsync), указываешь разделы, включаешь расписание. Перед обновлением — открыл Timeshift, нажал «Create», и через минуту у тебя есть точка отката. Можно настроить и автоматические снимки: раз в день, раз в неделю, при загрузке.

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

Как откатиться, если обновление всё-таки сломало систему

Снапшот бесполезен, если ты не знаешь, как из него загрузиться. Разберём оба случая.

Btrfs + snapper. Если установлен grub-btrfs, снапшоты появляются в меню GRUB отдельным пунктом. Перезагрузился, выбрал снапшот — система загрузилась в состояние до обновления. Это read-only режим: проверить, что всё работает, можно, но изменения не сохранятся. Для полноценного отката:

sudo snapper rollback

Команда делает текущий корень снимком и подставляет на его место нужный снапшот. После перезагрузки система — как до обновления.

ext4 + Timeshift. Снапшоты rsync нельзя «загрузить» из GRUB. Откат делается из live-USB: загрузился с флешки, запустил Timeshift, выбрал снапшот и нажал «Restore». Программа сама восстановит систему. Это дольше, чем на btrfs, но всё равно быстрее, чем переустановка.

Подробный разбор всех способов отката — в статье про восстановление после поломки.

Сколько места съедают снапшоты

Главный страх новичка: «снапшоты займут весь диск». На практике всё скромнее.

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

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

И там, и там нужна политика очистки. Snapper сам обрезает старые снапшоты по расписанию: хранит, например, десять ежечасных, десять ежедневных и десять ежемесячных. Timeshift тоже чистит по расписанию. Главное — не отключать таймеры очистки, иначе снапшоты начнут копиться.

Быстрые советы

  • Снапшот перед каждым крупным обновлением ядра или GPU-драйвера — обязательно. Это самые частые источники поломок.
  • Перед мелкими обновлениями (один-два пакета) снапшот не нужен — риск минимален, а привычка «снапшот на каждый чих» засоряет список.
  • Если обновляешься редко и тянешь сразу много — снапшот обязателен. Чем больше пакетов в pacman -Syu, тем выше шанс регрессии.
  • Держи снапшот пару дней после обновления, не удаляй сразу.
  • Проверь, что откат реально работает, до того как он понадобится. Загрузиться в снапшот и вернуться — тренировка на пять минут, которая спасёт в стрессовой ситуации.

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

Снапшот — это то же самое, что бэкап?

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

Что делать, если снапшот не создался перед обновлением?

Не паникуй. Сначала попробуй откатить отдельные пакеты из кэша pacman — это работает без снапшотов. Если не помогло, смотри статью про восстановление без сети. А после починки — настрой автоматические хуки, чтобы больше не забывать.

Можно ли делать снапшоты на ext4 без Timeshift?

Можно, но неудобно. На ext4 нет copy-on-write, поэтому «мгновенных» снапшотов не бывает. Timeshift решает это через rsync и жёсткие ссылки. Альтернатива — LVM-снапшоты, но их настройка сложнее.

Сколько снапшотов хранить?

Зависит от места на диске. Разумный минимум — пять-десять. Snapper по умолчанию хранит больше, но сам чистит старые. Главное — не отключай таймеры очистки.

Полезные ресурсы

Заключение

Снапшот перед обновлением — привычка, которая окупается при первом же сломанном pacman -Syu. На btrfs с snapper — одна команда или автоматический хук, на ext4 с Timeshift — пара кликов в GUI. Минута на создание, минута на откат, и поломка превращается из катастрофы в рутину. Настрой один раз — и забудь о переустановках.



Не получилось? Поможем настроить

Задай вопрос в чате — отвечаем быстро, по делу и без воды.

Читайте также

Комментарии

Загрузка…

Откроется GitHub: создайте новый issue с вашим комментарием (кнопка «Submit new issue»). После отправки обновите эту страницу — комментарий появится ниже.

Telegram Max