
Ссылка на статью в формате MarkDown для Curl, кодировка RU.UTF-8
Снапшот корня btrfs при обновлении системы
Адрес статьи: nixscript.ru/btrfs-snapshot-root
Для рачиподобных систем!
Скрипт при обновлении системы создает снапшот корня btrfs.
Создаем файл /usr/share/libalpm/hooks/savepoint.hook с таким содержанием:
[Trigger]
Operation = Upgrade
Type = Package
Target = *
[Action]
Description = Создает снапшот при обновлении системы
Depends = coreutils
When = PreTransaction
Exec = /usr/bin/bash -c '/opt/scripts/savepoint.sh'
и создаем скрипт /opt/scripts/savepoint.sh с таким содержанием:
#!/bin/bash
TDIR=$(mktemp -d)
export HERE="$(df -h / | grep /dev | cut -c1-9)"
if [ -d "$TDIR" ]
then
mount -t btrfs -o subvolid=0 "$HERE" "$TDIR/"
else
umount "$TDIR/"
mount -t btrfs -o subvolid=0 "$HERE" "$TDIR/"
fi
if [ -e "$TDIR/@_update" ]
then
btrfs subvolume delete "$TDIR/@_update";
btrfs subvolume snapshot / "$TDIR/@_update"
else btrfs subvolume snapshot / "$TDIR/@_update"
fi
if umount "$TDIR/"
then
rm -rf "$TDIR"
else
echo "Can't umount $TDIR.
You must umount it, and remove dir $TDIR."
fi
Вот только если корень в нулевом томе, как отработает не проверял.
Автор: Jaam Maikin 05.05.2019
Корректировка: Изменена директория монтирования на временную, чтобы не создавать проблем при снапшоте.
Статья написана в формате MarkDown и сконвертирована в HTML с помощью скрипта Parsedown.