KIO Snapshot 1.0: предыдущие версии файлов из снимков Btrfs в Dolphin

20 августа 2026 года вышел первый стабильный KIO Snapshot 1.0.0. Это не отдельный «менеджер точек восстановления», а дополнение к подсистеме ввода-вывода KIO: прошлые версии файлов из снимков Btrfs открываются прямо в Dolphin и в других приложениях KDE, которые понимают протоколы KIO.

Автор, Bharadwaj Raju, описал работу в заметке от 20 августа. Тарболл лежит на download.kde.org/stable/kio-snapshot: kio-snapshot-1.0.0.tar.xz, время файла 13:19 UTC. Тег v1.0.0 в Invent подписан в тот же день. С процессом релиза помогал Bhushan Shah.

Что умеет KIO Snapshot в Dolphin

Снимки Btrfs дешёвые: это особый случай subvolume, файловые экстенты делятся с оригиналом, место занимают только отличия. На этом давно живут Snapper, Timeshift и Btrfs Assistant. Не хватало того, что в Windows называется Previous Versions, а в macOS Time Machine: открыл файл в обычном диспетчере и увидел историю, не уходя в отдельную админскую утилиту.

KIO Snapshot как раз про этот слой. По контекстному меню файла открывается виртуальная папка с сохранёнными версиями. Их можно сравнить, посмотреть свойства или скопировать нужную.

Dolphin: виртуальная папка KIO Snapshot со списком прошлых версий файла CMakeLists.txt
Версии одного файла в виртуальной папке Dolphin. Интерфейс KIO Snapshot 1.0, кадр из анонса Bharadwaj Raju, 20.08.2026.

Для каталога есть обзор целого дерева subvolume на момент снимка. Автор сначала делал диалог с кнопками «открыть / восстановить», как в Windows, затем заменил его на обычную виртуальную папку: так проще выделить несколько версий и отдать их в любой инструмент сравнения.

Dolphin: список снимков subvolume домашнего каталога через протокол snapshot://
Снимки subvolume домашнего каталога в протоколе snapshot://. Тот же анонс KIO Snapshot 1.0, 20.08.2026.

Протокол называется snapshot://. Его понимают программы на KDE Frameworks, не только Dolphin. В AppStream-метаданных дополнение заявлено как addon к Dolphin, Konqueror, Krusader и Gwenview. Сам worker в JSON описан как только для чтения: писать, удалять и перемещать через snapshot:// нельзя. «Восстановить» на практике значит скопировать версию из виртуальной папки туда, куда нужно.

Почему это важно на практике

Типичный сценарий не «откатить весь корень после сломанного обновления», а вернуть один документ, скрипт или конфиг, который перезаписали час назад. Если домашний каталог лежит на Btrfs и снимки уже есть, это ближе к повседневной работе, чем разбор btrfs subvolume list в терминале.

Для серверного VPS с WordPress и Nginx новость слабее: там обычно ext4, а откат делают через rsync, снапшоты гипервизора или бэкап панели. На десктопе Plasma со свежей Btrfs-разметкой картина другая. Рядом по стеку KDE на сайте уже разбирали kscreenctl в Plasma 6.8: там тоже закрывают старую дыру «есть CLI, но им неудобно пользоваться».

Как это устроено

С файловой системой worker говорит через libbtrfsutil из btrfs-progs, с монтированием через Solid. API Btrfs для обычного пользователя очень осторожный: даже вопрос «в каком subvolume лежит этот путь» суперпользователю отвечает, а обычному нет. Первый прототип держал системный DBus-сервис под root. После подсказки Méven Car автор обошёл это без привилегированного демона: Btrfs готов отдать список доступных subvolume под путём, а из него уже собирается нужная карта.

Сборка в CMake просит Qt не ниже 6.8, KDE Frameworks не ниже 6.23 и пакет libbtrfsutil. Лицензия LGPL-2.0-or-later. Рядом автор правил KIO (поведение адресной строки Dolphin), Solid (раскладка Btrfs как в KDE Linux) и дефолтный вид папок снимков в Dolphin.

Важная граница: дополнение снимки не создаёт. Без Snapper, Timeshift, ручного btrfs subvolume snapshot или политики дистрибутива в виртуальной папке будет пусто. Если снимки делает Snapper, в README прямо сказано: пользователя нужно добавить в ALLOW_USERS нужного конфига и включить SYNC_ACL=yes, иначе каталоги .snapshots остаются закрыты для обычного сеанса.

KDE Linux уже готовит это из коробки

9 августа 2026 в KDE Linux влит RootFSv3 (MR !475): домашние каталоги пользователей стали отдельными Btrfs subvolume. Без этого снимок «всего /home» плохо стыкуется с историей одного человека.

14 августа влит MR !613 «Set up snapper for kio-snapshot». В образ добавлен пакет snapper, включены snapper-timeline.timer и snapper-cleanup.timer. При входе пользователя systemd поднимает oneshot, который создаёт конфиг home_UID по шаблону home, прописывает ALLOW_USERS и ставит SYNC_ACL=yes. Timeline в шаблоне: почасовых снимков 6, дневных 7, недельных 4, месячных 2. Это не «вечный архив», а короткое окно, из которого как раз удобно доставать случайно затёртый файл.

В заметке от 20 августа автор формулирует осторожнее: KDE Linux скоро будет отдавать Snapper и KIO Snapshot из коробки. Snapper в образе уже есть. KIO Snapshot к тому моменту только-только получил стабильный тарболл, поэтому формулировка «уже предустановлено в каждом ISO» пока относится к цепочке в репозитории дистрибутива, а не к гарантированному составу конкретной сборки, которую вы скачали неделю назад.

Как поставить и чем проверить

В Arch Linux пакет уже в Extra: kio-snapshot 1.0.0-1, сборка Antonio Rojas, дата 20 августа 2026, 21:02 UTC. KDE Linux собирается вокруг Arch, так что путь пакета короткий. В Ubuntu, Fedora и openSUSE на момент подготовки материала отдельного пакета в поиске репозиториев не видно: автор как раз писал, что дистрибутивы подтянут его «достаточно скоро».

На Arch установка такая:

sudo pacman -S kio-snapshot

Дальше имеет смысл убедиться, что домашний каталог вообще на Btrfs и что это subvolume, а не обычный каталог на общем томе:

findmnt -no FSTYPE,SOURCE "$HOME"
sudo btrfs subvolume show "$HOME"

Если subvolume show отвечает ошибкой, снимок «только моего home» Snapper сделать не сможет. Тогда либо переносят home на subvolume (это уже разметка диска, не кнопка в Dolphin), либо смотрят историю на уровне корневого subvolume, если снимки делаются там.

Для ручной настройки Snapper на отдельный home (права администратора, сначала на тестовой машине) схема из документации Snapper и ArchWiki такая:

sudo snapper -c home_user create-config /home/user
sudo snapper -c home_user set-config "ALLOW_USERS=user" SYNC_ACL="yes"

Имена home_user и user нужно заменить на свои. После этого обычный пользователь должен суметь выполнить snapper -c home_user list без sudo. Если список пустой, в Dolphin тоже нечего показывать: сначала нужны сами точки. Проверить, что ACL на .snapshots живые, можно так:

getfacl "$HOME/.snapshots"

Где обычно ломается

Файловая система не Btrfs. Тогда KIO Snapshot просто не из чего собирать историю. Ext4, XFS и ZFS здесь ни при чём.

Снимки есть, но каталог .snapshots принадлежит root, ALLOW_USERS пустой, SYNC_ACL по умолчанию no. Меню в Dolphin либо не появится, либо откроет пустоту. Это самая частая ловушка на openSUSE и самодельных конфигах Snapper.

Home не subvolume. Снимок всего /home содержит файлы соседа. KDE Linux как раз поэтому ушёл на RootFSv3.

Снимки Btrfs не заменяют копию на другой диск. Повреждение тома, шифровальщик и ошибка btrfs subvolume delete бьют по живым данным и по точкам сразу. Для рабочего сайта и для ноутбука с единственным NVMe это по-прежнему rsync, Borg, restic или снапшот у хостера, а не только timeline Snapper.

Протокол только для чтения. Перезаписать текущий файл «на месте» одной кнопкой Restore worker не обещает. Нужно скопировать версию из виртуальной папки.

Как проверить, что заработало

  1. Пакет установлен, в Dolphin после перезапуска сеанса есть пункты просмотра снимков у локального файла на Btrfs.
  2. snapper -c … list от обычного пользователя показывает точки, не ошибку доступа.
  3. В виртуальной папке видны разные даты, а не один и тот же файл десять раз. Worker отфильтровывает версии с одинаковым временем изменения.
  4. Файл из снимка открывается и копируется, запись обратно в snapshot:// не предлагается.

Ошибки и пожелания автор просит слать в bugs.kde.org, продукт kio-snapshot.

Вывод

KIO Snapshot 1.0.0 закрывает старую дыру Linux-десктопа: снимки Btrfs больше не обязаны жить только в отдельной утилите. 20 августа 2026 вышел стабильный тарболл, Arch Extra уже пакетит 1.0.0-1, в KDE Linux дома сделали subvolume и настроили Snapper с доступом без root. Само дополнение точки не создаёт. Если снимков нет, Dolphin честно покажет пустую историю. Если снимки есть и ACL открыты, предыдущая версия файла достаётся из контекстного меню, без sudo и без похода в Btrfs Assistant.

Источники


Комментарии загружаются…