`/home`(btrfs)のSnapperを除く

`/home`(btrfs)のSnapperを除く

それを使用する標準的な方法はありますか?ドミbtrfsのユーザーホームフォルダの下のディレクトリを除外しますか?教えてください...~/.cache/yayアーチです。または~/.cache全体的に。

もちろん、SOPは、マウントされたフォルダ階層内の親のサブボリュームのスナップショットからフォルダの内容を除外しようとするたびにサブボリュームを作成することです。ただし、これは~/ユーザーが追加されるたびに除外された各フォルダのサブボリュームを作成することを意味します。メンテナンスが複雑であるだけでなく、一般的なユーザー作成に加えて、いくつかの追加手順が必要です。

useradd私はandのラッパースクリプトを作成し、userdelその中に入れて/usr/local/sbin優先順位を付けることができると思いました。しかし、もっとエレガントな方法があるかどうかを確認したかったです。

コンテキスト

それは問題ではありません。現在Snapperをデプロイしている唯一のシステムは、root以外の複数のユーザーを持つことができないホームゲートウェイです。しかし、将来について何かを知っておくと良いでしょう。

サブボリューム(既存のスナップショットを除く):

$ sudo btrfs subvolume list /
ID 258 gen 33625 top level 5 path home
ID 262 gen 33553 top level 5 path opt
ID 264 gen 33555 top level 5 path var-www
ID 266 gen 33630 top level 5 path arch
ID 267 gen 33631 top level 5 path var-log
ID 268 gen 33566 top level 5 path pacman-cache
ID 270 gen 45 top level 266 path var/lib/portables
ID 271 gen 46 top level 266 path var/lib/machines
ID 274 gen 33566 top level 266 path .snapshots
ID 276 gen 33556 top level 258 path home/.snapshots
ID 278 gen 33556 top level 262 path opt/.snapshots
ID 279 gen 33556 top level 264 path var-www/.snapshots

/etc/fstab:

# /dev/sda6 LABEL=system
UUID=18f47506-31c6-4d22-939d-684ace61301f / btrfs rw,noatime,compress=zstd:3,ssd,space_cache,subvolid=266,subvol=/arch,subvol=arch 0 0

# /dev/sda6 LABEL=system
UUID=18f47506-31c6-4d22-939d-684ace61301f /.snapshots btrfs rw,nodev,noexec,noatime,compress=zstd:3,ssd,space_cache,subvolid=274,subvol=/arch/.snapshots,subvol=arch/.snapshots 0 0

# /dev/sda1
UUID=27d5943f-e74d-480f-be46-a370c5b1f37f /boot ext4 rw,noatime,nodev,nosuid,noexec 0 2

# /dev/sda6 LABEL=system
UUID=18f47506-31c6-4d22-939d-684ace61301f /home btrfs rw,noatime,nodev,compress=zstd:3,ssd,space_cache,subvolid=258,subvol=/home,subvol=home 0 0

# /dev/sda6 LABEL=system
UUID=18f47506-31c6-4d22-939d-684ace61301f /home/.snapshots btrfs rw,nodev,noexec,noatime,compress=zstd:3,ssd,space_cache,subvolid=276,subvol=/home/.snapshots,subvol=home/.snapshots 0 0

# /dev/sda6 LABEL=system
UUID=18f47506-31c6-4d22-939d-684ace61301f /opt btrfs rw,noatime,nodev,nosuid,compress=zstd:3,ssd,space_cache,subvolid=262,subvol=/opt,subvol=opt 0 0

# /dev/sda6 LABEL=system
UUID=18f47506-31c6-4d22-939d-684ace61301f /opt/.snapshots btrfs rw,nodev,noexec,noatime,compress=zstd:3,ssd,space_cache,subvolid=278,subvol=/opt/.snapshots,subvol=opt/.snapshots 0 0

# /dev/sda6 LABEL=system
UUID=18f47506-31c6-4d22-939d-684ace61301f /var/log btrfs rw,noatime,nodev,nosuid,noexec,compress=zstd:3,ssd,space_cache,subvolid=267,subvol=/var-log,subvol=var-log 0 0

# /dev/sda6 LABEL=system
UUID=18f47506-31c6-4d22-939d-684ace61301f /var/www btrfs rw,noatime,nodev,nosuid,noexec,compress=zstd:3,ssd,space_cache,subvolid=264,subvol=/var-www,subvol=var-www 0 0

# /dev/sda6 LABEL=system
UUID=18f47506-31c6-4d22-939d-684ace61301f /var/www/.snapshots btrfs rw,nodev,noexec,noatime,compress=zstd:3,ssd,space_cache,subvolid=279,subvol=/var-www/.snapshots,subvol=var-www/.snapshots 0 0

# /dev/sda6 LABEL=system
UUID=18f47506-31c6-4d22-939d-684ace61301f /var/cache/pacman/pkg btrfs rw,noatime,nodev,nosuid,noexec,compress=zstd:3,ssd,space_cache,subvolid=268,subvol=/pacman-cache,subvol=pacman-cache 0 0

# /dev/sda5
UUID=5415bf33-0a89-4a36-a224-27dbb4c43977 none swap defaults 0 0

ベストアンサー1

スナッパー(BTRFSを含む)の粒度はBTRFSスナップショットです。スナップショットの境界はBTRFSサブボリュームなので、ディレクトリ/フォルダを除外するようにSnapperを設定することはできません。スナッパーはこれを制御できません。

私のシステムは、スナップショットを作成したくないディレクトリのサブボリュームを作成するのとまったく同じことを行います。

ユーザーアカウントの作成中にこの方法を設定するには、ユーザーがログインするときに必要なサブボリュームを生成するシェルスクリプトを含むスケルトンディレクトリを作成できます(まだ存在しない場合)。非 root ユーザーは BTRFS を使用できます。サブボリュームを作成します(削除しません)。

使用すると、このスケルトンディレクトリがユーザーのホームディレクトリにコピーされますuseradd。その後、ユーザーが初めてログインすると、サブボリューム(例:.cache)が作成されます。ラッパースクリプトは必要ありません。望むよりman useradd

おすすめ記事