Все об Arch Linux

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

Снапшоты на ext4: LVM и rsync вместо btrfs

На ext4 нет мгновенных снапшотов, как на btrfs или ZFS: файловая система не работает по принципу copy-on-write, поэтому «слепок за секунду» тут невозможен. Но откат после неудачного pacman -Syu всё равно доступен — через LVM-снапшоты, Timeshift на rsync или ручную rsync-схему с жёсткими ссылками. Ниже — как работает каждый способ, чем они отличаются и какой выбрать под твою систему.

Почему на ext4 нет нативных снапшотов, как на btrfs?

Снапшот в btrfs — это не копия файлов, а ссылка на неизменённые блоки: файловая система работает по copy-on-write, и пока файлы не меняются, снапшот и оригинал делят одни и те же блоки. Изменился файл — btrfs записывает новую версию, а старая остаётся в снапшоте. Поэтому снапшот создаётся мгновенно и почти не занимает места.

ext4 устроена иначе. Это классическая файловая система с журналированием: файлы пишутся на место, а не в новые блоки. Сделать «слепок» состояния на лету ext4 не умеет — для этого пришлось бы останавливать запись и копировать всё содержимое. Именно поэтому нативные снапшоты есть у btrfs и ZFS, а у ext4 их нет и не будет: это фундаментальное ограничение архитектуры, а не недоработка.

Что ext4 умеет вместо снапшотов:

  • fsck — проверка и починка структуры после сбоя, но не откат к прошлому состоянию;
  • резервное копирование — rsync, tar, dd, но это копии, а не мгновенные слепки.

Если нужны настоящие мгновенные снапшоты — путь один: btrfs. Как поставить Arch на btrfs со снапшотами с первого дня, разобрано в статье про установку с btrfs-снапшотами. Если переходить не хочется, а откат после обновления нужен — читай дальше: все три способа ниже работают на ext4.

Как делать LVM-снапшоты и откатываться с них?

LVM — менеджер логических томов, который лежит между диском и файловой системой. Если система установлена на LVM, у тебя есть логические тома (/dev/arch/root, /dev/arch/home), и для них LVM умеет делать снапшоты — почти как btrfs, но на уровне тома, а не файловой системы.

Создание снапшота:

sudo lvcreate -s -n snap-root -L 10G arch/root

Разбор: -s — снапшот, -n snap-root — имя, -L 10G — размер области изменений, arch/root — исходный том. Снапшот создаётся мгновенно: LVM не копирует файлы, а запоминает, какие блоки менялись после создания.

Посмотреть снапшоты:

sudo lvs

Монтирование снапшота для чтения:

sudo mkdir -p /mnt/snap
sudo mount -o ro /dev/arch/snap-root /mnt/snap

Так можно заглянуть в состояние системы до обновления: сравнить конфиги, вытащить нужный файл, убедиться, что было до -Syu.

Откат — вернуть том к состоянию снапшота:

sudo umount /dev/arch/root
sudo lvconvert --merge /dev/arch/snap-root

После перезагрузки корень — как на момент создания снапшота. Откат работает только если снапшот создан до обновления, а система после отката — ровно то состояние.

Плюсы LVM-снапшотов:

  • мгновенное создание, почти не занимает места, пока файлы не меняются;
  • откат одной командой, без переустановки;
  • работает на любой файловой системе поверх LVM, включая ext4.

Минусы:

  • система должна быть на LVM с самого начала — перенести уже установленную ext4 на LVM без переустановки сложно;
  • снапшоту нужна область изменений: в классическом LVM это зарезервированный размер (-L 10G), в thin pool — место на пуле. Если область переполнится, снапшот станет невалидным и откат не сработает;
  • снапшот живёт на том же диске — не защищает от поломки диска.

Как работает Timeshift на ext4?

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

Установка:

sudo pacman -S timeshift

Настройка — в GUI: выбираешь тип «rsync», указываешь раздел для снапшотов (лучше отдельный диск или раздел, а не тот, где система), включаешь расписание. Timeshift сам ставит задачу в cron и делает снимки по расписанию: раз в день, раз в неделю, при загрузке.

Перед обновлением — открыл Timeshift, нажал «Create», через минуту точка отката готова. Если обновление сломалось, а снимок не создан — свежая точка по расписанию всё равно есть.

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

Про снапшоты на btrfs и snapper, если захочешь сравнить оба мира, — в статье про снапшот перед обновлением. Там же — как Timeshift работает на btrfs.

Как собрать rsync-схему со снапшотами вручную?

Timeshift — удобно, но это GUI и свои правила. Если хочется полный контроль, та же схема собирается руками: rsync + жёсткие ссылки. Идея та же, что у Timeshift: полная копия системы, а неизменённые файлы связываются с предыдущей копией через --link-dest.

Схема: каталог /mnt/snapshots/ с подкаталогами по датам. Первый запуск — полная копия:

sudo rsync -aAX --delete --exclude='/proc' --exclude='/sys' --exclude='/dev' \
  --exclude='/run' --exclude='/tmp' --exclude='/mnt' --exclude='/media' \
  --exclude='/var/cache/pacman/pkg' / /mnt/snapshots/2026-09-25/

Следующий запуск — с --link-dest, чтобы неизменённые файлы не копировались, а связывались с предыдущим снимком:

sudo rsync -aAX --delete --link-dest=/mnt/snapshots/2026-09-24/ \
  --exclude='/proc' --exclude='/sys' --exclude='/dev' \
  --exclude='/run' --exclude='/tmp' --exclude='/mnt' --exclude='/media' \
  --exclude='/var/cache/pacman/pkg' / /mnt/snapshots/2026-09-25/

Флаги: -a — архивный режим, -A — ACL, -X — расширенные атрибуты, --delete — удалять файлы, которых больше нет в источнике, --link-dest — каталог предыдущего снимка для жёстких ссылок. Исключения обязательны: /proc, /sys, /dev, /run, /tmp — виртуальные и временные каталоги, их копировать нельзя; /mnt и /media — чтобы не копировать сам каталог снапшотов в себя.

Автоматизация — скрипт и cron:

#!/bin/bash
SNAP_DIR=/mnt/snapshots
LAST=$(ls -1 "$SNAP_DIR" | tail -1)
TODAY=$(date +%F)
rsync -aAX --delete --link-dest="$SNAP_DIR/$LAST" \
  --exclude='/proc' --exclude='/sys' --exclude='/dev' \
  --exclude='/run' --exclude='/tmp' --exclude='/mnt' --exclude='/media' \
  --exclude='/var/cache/pacman/pkg' / "$SNAP_DIR/$TODAY/"
0 3 * * * root /usr/local/bin/snap-root.sh

Откат: загрузился с live-USB, смонтировал корень и каталог снапшотов, вернул нужный снимок:

rsync -aAX --delete /mnt/snapshots/2026-09-25/ /mnt/root/

Плюсы ручной схемы: полный контроль, никакого GUI, работает на любом диске. Минусы: откат только из live-среды, снапшоты не появляются в меню GRUB, за чисткой старых снимков следишь сам.

Что выбрать: LVM, Timeshift или rsync?

Сравнение по ключевым параметрам:

Способ Мгновенность Место Откат Годится для отката после -Syu
LVM-снапшот мгновенно почти ноль, пока нет изменений одна команда, но нужен LVM да, лучший вариант на ext4
Timeshift (rsync) минуты только изменения (жёсткие ссылки) из live-USB, через GUI да, самый простой
rsync вручную минуты только изменения (–link-dest) из live-USB, командой да, полный контроль

Когда что выбирать:

  • LVM — если система уже на LVM или ставишь с нуля и хочешь мгновенные снапшоты на ext4. Это ближайший аналог btrfs-снапшотов.
  • Timeshift — если не хочешь возиться с командами: поставил, настроил расписание, забыл.
  • rsync вручную — если нужен контроль над каждым флагом и не пугает скрипт в cron.

Важно: все три способа — про откат после обновления, а не про бэкап. Снапшот живёт на том же диске и не спасёт при поломке диска. Для страховки от сбоя диска нужна отдельная копия на другом носителе — это уже бэкап, а не снапшот.

На btrfs откат устроен иначе: снапшоты загружаются прямо из GRUB, а закрепление отката — одна команда snapper rollback. Полный цикл — в статье про стратегию отката. На ext4 такого нет: любой из трёх способов требует live-среды или команды в работающей системе.

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

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

Можно, но это будет не мгновенный слепок, а копия: rsync с --link-dest или tar. Мгновенность на ext4 даёт только LVM, потому что снапшот делает менеджер томов, а не файловая система.

Что делать, если LVM-снапшот переполнился?

Снапшот станет невалидным, и откат не сработает. Поэтому размер области изменений закладывай с запасом (10–20 ГБ на корень) и следи за lvs: если заполнение растёт — удали старый снапшот и создай новый.

Чем снапшот отличается от бэкапа?

Снапшот — состояние системы на том же диске: откат за минуты, но не защищает от поломки диска. Бэкап — копия на другом носителе: защищает от всего, но восстановление дольше. Для отката после -Syu хватает снапшота, для страховки от сбоя диска нужен бэкап.

Timeshift на ext4 — это те же снапшоты, что на btrfs?

Нет. На btrfs Timeshift делает настоящие снапшоты — мгновенные, через copy-on-write. На ext4 — rsync-копии с жёсткими ссылками: создание занимает минуты, а откат возможен только из live-среды.

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

Заключение

На ext4 нет мгновенных снапшотов, как на btrfs, но откат после неудачного обновления доступен тремя способами. LVM-снапшоты — ближайший аналог btrfs: мгновенные, почти бесплатные по месту, откат одной командой, но нужна система на LVM. Timeshift — самый простой вариант: rsync-копии с жёсткими ссылками, расписание в cron, откат из live-USB. Ручная rsync-схема с --link-dest — то же самое, но под полным контролем. Выбирай по ситуации: LVM, если он уже есть или ставишь с нуля, Timeshift — если хочется минимум действий, rsync — если нужен контроль. А если хочется настоящих мгновенных снапшотов — btrfs ждёт.



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

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

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

Комментарии

Загрузка…

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

Telegram Max