Одно pacman -Syu может сломать графический стек, звук или ядро — и это не редкая история, а обычный день Arch-пользователя. Снапшот перед обновлением превращает поломку из «переустановки на полдня» в «минуту на откат». Ниже — как сделать эту привычку автоматической: на btrfs с snapper и на ext4 с Timeshift.
Arch Linux обновляется часто и целиком. pacman -Syu тянет не один пакет, а всю систему: ядро, драйверы, библиотеки, графический стек. Любой из них может принести регрессию. Типичные сценарии:
Проблема не в том, что Arch «нестабильный». Проблема в том, что обновление — это всегда риск, и ты не знаешь заранее, какой пакет его принесёт. Снапшот — страховка на случай, если риск реализовался. Создание занимает минуту, откат — минуту. Дешевле не бывает.
Если система на btrfs и snapper уже настроен (как в статье про установку с btrfs-снапшотами), снапшот перед обновлением — одна команда:
sudo snapper -c root create -d "before update"
Флаг -d добавляет описание, чтобы в списке было видно, зачем снимок сделан. Проверить, что всё на месте:
snapper list
В выводе увидишь номер снапшота, дату, тип и описание. Перед обновлением создал — после обновления, если всё хорошо, можно удалить:
sudo snapper -c root delete <номер>
Но лучше не удалять сразу: дай системе пожить день-два. Иногда поломка всплывает не в момент обновления, а позже — при перезагрузке или первом запуске приложения.
Ручная команда — это хорошо, но привычка должна работать, даже когда ты забыл. Для этого 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. Он ставит такие хуки за тебя и делает пары снапшотов: до и после каждой операции. Плюс — откат к состоянию «до обновления» одной командой. Минус — снапшотов становится много, и за ними нужна чистка.
Не все хотят возиться с 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 тоже чистит по расписанию. Главное — не отключать таймеры очистки, иначе снапшоты начнут копиться.
pacman -Syu, тем выше шанс регрессии.Нет. Бэкап — это копия файлов, которую можно перенести на другой диск. Снапшот — это состояние системы на том же диске. Он не защищает от поломки диска, но отлично защищает от сломанного обновления.
Не паникуй. Сначала попробуй откатить отдельные пакеты из кэша pacman — это работает без снапшотов. Если не помогло, смотри статью про восстановление без сети. А после починки — настрой автоматические хуки, чтобы больше не забывать.
Можно, но неудобно. На ext4 нет copy-on-write, поэтому «мгновенных» снапшотов не бывает. Timeshift решает это через rsync и жёсткие ссылки. Альтернатива — LVM-снапшоты, но их настройка сложнее.
Зависит от места на диске. Разумный минимум — пять-десять. Snapper по умолчанию хранит больше, но сам чистит старые. Главное — не отключай таймеры очистки.
pacman -UСнапшот перед обновлением — привычка, которая окупается при первом же сломанном pacman -Syu. На btrfs с snapper — одна команда или автоматический хук, на ext4 с Timeshift — пара кликов в GUI. Минута на создание, минута на откат, и поломка превращается из катастрофы в рутину. Настрой один раз — и забудь о переустановках.
Задай вопрос в чате — отвечаем быстро, по делу и без воды.
Комментарии