`/home`(btrfs)의 Snapper 제외

`/home`(btrfs)의 Snapper 제외

그것을 사용하는 표준 방법이 있습니까?도미btrfs에서 사용자 홈 폴더 아래의 디렉터리를 제외하시겠습니까? 말해보세요... ~/.cache/yay아치에요. 아니면 ~/.cache전체적으로.

물론 SOP는 마운트된 폴더 계층 구조에서 상위에 있는 하위 볼륨의 스냅샷에서 폴더의 내용을 제외하려고 할 때마다 하위 볼륨을 생성하는 것임을 알고 있습니다. 그러나 이는 ~/사용자가 추가될 때마다 제외된 각 폴더에 대한 하위 볼륨을 생성한다는 의미입니다. 유지 관리가 복잡할 뿐만 아니라 일반적인 사용자 생성 외에 몇 가지 추가 단계가 필요합니다.

useradd나는 and에 대한 래퍼 스크립트를 만들고 userdel그 안에 넣어서 /usr/local/sbin우선순위를 가질 수 있다고 생각했습니다. 하지만 좀 더 우아한 방법이 있는지 확인하고 싶었습니다.

문맥

그것은 중요하지 않습니다. 현재 Snapper를 배포한 유일한 시스템은 루트가 아닌 여러 사용자를 가질 수 없는 홈 게이트웨이입니다. 그러나 미래에 대해 뭔가를 아는 것이 좋을 것입니다.

하위 볼륨(기존 스냅샷 제외):

$ 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를 구성할 수 없습니다. 스내퍼는 이를 통제할 수 없습니다.

내 시스템에서는 스냅샷을 생성하고 싶지 않은 디렉토리에 대한 하위 볼륨을 생성하는 것과 정확히 동일하게 수행합니다.

사용자 계정 생성 중에 이 방법을 설정하려면 사용자가 로그인할 때 필요한 하위 볼륨을 생성하는 쉘 스크립트가 포함된 뼈대(skell) 디렉토리를 생성할 수 있습니다(아직 존재하지 않는 경우). 루트가 아닌 사용자는 BTRFS를 사용할 수 있습니다. 하위 볼륨을 생성합니다(삭제하지는 않음).

사용되면 이 뼈대 디렉토리가 사용자의 홈 디렉토리에 복사됩니다 useradd. 그런 다음 사용자가 처음으로 로그인하면 하위 볼륨(예: .cache)이 생성됩니다. 래퍼 스크립트가 필요하지 않습니다. 바라보다 man useradd.

관련 정보