kimono-koans / httm

Interactive, file-level Time Machine-like tool for ZFS/btrfs/nilfs2 (and even Time Machine and Restic backups!)
https://crates.io/crates/httm
Mozilla Public License 2.0
1.35k stars 29 forks source link

Only one version listed on snapper/btrfs using sudo #85

Closed quidnu closed 1 year ago

quidnu commented 1 year ago

Describe the bug When trying to run httm on a file only one version is displayed. This is on btrfs using snapper automatic snapshots (hourly)

To Reproduce Steps to reproduce the behavior:

  1. sudo /usr/bin/httm ~/.zshrc
  2. see only one version listed (presumably corresponding to the current version).

Expected behavior Expected different versions listed corresponding to the (many) snapshots created automatically with snapper

Additional context

kimono-koans commented 1 year ago

Thank you for your bug report.

httm --debug requires you execute with an input file, otherwise it waits on stdin.

Could you try executing sudo httm --debug ~/.zshrc 2>&1 and post the output here?

Do you have a number of unique file versions of ~/.zshrc or do all snapshot versions have the same contents?

To confirm, could you try executing sudo httm --unique=all ~/.zshrc and post the output here?

I've tested re: the latest httm version and it seems to work fine with a basic snapper setup. See:

25956  sudo zfs create -V 1G -b 8192 -o compression=zle -o logbias=throughput -o sync=always -o primarycache=metadata -o com.sun:auto-snapshot=false rpool/btrfs-test
25961  sudo mkfs.btrfs /dev/zvol/rpool/btrfs-test
25963  sudo mount /dev/zvol/rpool/btrfs-test /mnt
25965  sudo apt install snapper
25966  sudo snapper create-config /mnt
25968  cd /mnt
25971  sudo touch test
25972  echo hello | sudo tee test
25975  sudo snapper create
25974  echo "hello world" | sudo tee test
25975  sudo snapper create
25978  sudo httm test
─────────────────────────────────────────────────────────────────────
Wed Jul 05 11:58:34 2023   6 bytes  "/mnt/.snapshots/2/snapshot/test"
Wed Jul 05 11:58:49 2023  12 bytes  "/mnt/.snapshots/3/snapshot/test"
─────────────────────────────────────────────────────────────────────
Wed Jul 05 11:58:49 2023  12 bytes  "/mnt/test"
─────────────────────────────────────────────────────────────────────
quidnu commented 1 year ago

Not sure what I'm doing wrong, here is the (lightly redacted) debug output on ~/.zshrc and unique/all on ~/.history (which is constantly updated/snapshotted)

% sudo httm --unique=all ~/.history
────────────────────────────────────────────────────────────────
Wed Jul 05 12:09:23 2023  167.6 KiB  "/home/user1/.history"
────────────────────────────────────────────────────────────────
Config {
    paths: [
        PathData {
            path_buf: "/home/user1/.zshrc",
            metadata: Some(
                PathMetadata {
                    size: 16032,
                    modify_time: SystemTime {
                        tv_sec: 1687734620,
                        tv_nsec: 271436027,
                    },
                },
            ),
        },
    ],
    opt_recursive: false,
    opt_exact: false,
    opt_no_filter: false,
    opt_debug: true,
    opt_no_traverse: false,
    opt_omit_ditto: false,
    opt_no_hidden: false,
    opt_json: false,
    opt_one_filesystem: false,
    uniqueness: UniqueMetadata,
    opt_bulk_exclusion: None,
    opt_last_snap: None,
    opt_preview: None,
    opt_deleted_mode: None,
    opt_requested_dir: None,
    requested_utc_offset: -04:00:00,
    exec_mode: Display,
    print_mode: FormattedDefault,
    dataset_collection: FilesystemInfo {
        map_of_datasets: MapOfDatasets {
            inner: {
                "/": DatasetMetadata {
                    source: "/@",
                    fs_type: Btrfs,
                    mount_type: Local,
                },
                "/home/user2/spinner": DatasetMetadata {
                    source: "/@user2-home",
                    fs_type: Btrfs,
                    mount_type: Local,
                },
                "/home_spinner/user2": DatasetMetadata {
                    source: "/@user2-home",
                    fs_type: Btrfs,
                    mount_type: Local,
                },
                "/gnu/store": DatasetMetadata {
                    source: "/@",
                    fs_type: Btrfs,
                    mount_type: Local,
                },
                "/bdata": DatasetMetadata {
                    source: "/@bdata",
                    fs_type: Btrfs,
                    mount_type: Local,
                },
                "/var": DatasetMetadata {
                    source: "/@var",
                    fs_type: Btrfs,
                    mount_type: Local,
                },
                "/var/lib/docker/btrfs": DatasetMetadata {
                    source: "/@var",
                    fs_type: Btrfs,
                    mount_type: Local,
                },
                "/home_spinner": DatasetMetadata {
                    source: "/@home",
                    fs_type: Btrfs,
                    mount_type: Local,
                },
                "/tmp": DatasetMetadata {
                    source: "/@tmp",
                    fs_type: Btrfs,
                    mount_type: Local,
                },
                "/unet/media": DatasetMetadata {
                    source: "/@media",
                    fs_type: Btrfs,
                    mount_type: Local,
                },
                "/backups": DatasetMetadata {
                    source: "/@backups",
                    fs_type: Btrfs,
                    mount_type: Local,
                },
                "/backups/timemachine": DatasetMetadata {
                    source: "/@timemachine",
                    fs_type: Btrfs,
                    mount_type: Local,
                },
                "/unet": DatasetMetadata {
                    source: "/@unet",
                    fs_type: Btrfs,
                    mount_type: Local,
                },
                "/home/user1/spinner": DatasetMetadata {
                    source: "/@home",
                    fs_type: Btrfs,
                    mount_type: Local,
                },
                "/vmimages": DatasetMetadata {
                    source: "/@vmimages",
                    fs_type: Btrfs,
                    mount_type: Local,
                },
                "/var/snap/firefox/common/host-hunspell": DatasetMetadata {
                    source: "/@",
                    fs_type: Btrfs,
                    mount_type: Local,
                },
                "/home": DatasetMetadata {
                    source: "/@home",
                    fs_type: Btrfs,
                    mount_type: Local,
                },
                "/home/user2": DatasetMetadata {
                    source: "/@user2-home",
                    fs_type: Btrfs,
                    mount_type: Local,
                },
            },
            max_len: 6,
        },
        map_of_snaps: MapOfSnaps {
            inner: {
                "/": [],
                "/home/user2/spinner": [],
                "/home_spinner/user2": [],
                "/gnu/store": [],
                "/bdata": [],
                "/var": [
                    "/var/lib/docker/btrfs/subvolumes/8",
                    "/var/lib/docker/btrfs/subvolumes/5",
                    "/var/lib/docker/btrfs/subvolumes/a",
                    "/var/lib/docker/btrfs/subvolumes/d",
                ],
                "/var/lib/docker/btrfs": [],
                "/home_spinner": [],
                "/tmp": [],
                "/unet/media": [],
                "/backups": [],
                "/backups/timemachine": [],
                "/unet": [],
                "/home/user1/spinner": [],
                "/vmimages": [],
                "/var/snap/firefox/common/host-hunspell": [],
                "/home": [],
                "/home/user2": [],
            },
        },
        filter_dirs: FilterDirs {
            inner: {
                "/dev/mqueue",
                "/snap/gnome-3-38-2004/137",
                "/run/snapd/ns/firefox.mnt",
                "/snap/gnome-system-monitor/184",
                "/run/user/1001/gvfs",
                "/media/user1/f",
                "/snap/core/15419",
                "/snap/youtube-dl/4630",
                "/media/user1/f_volume",
                "/snap/android-studio/126",
                "/run/credentials/systemd-sysusers.service",
                "/snap/discord/151",
                "/run/credentials/systemd-sysctl.service",
                "/run/docker/netns/4ce484ee081c",
                "/snap/core20/1974",
                "/snap/core20/1950",
                "/run/docker/netns/aa42ee39468f",
                "/snap/gnome-3-26-1604/111",
                "/snap/code/131",
                "/media/user1/backup_disk",
                "/sys",
                "/snap/chromium/2497",
                "/dev/hugepages",
                "/run/user/1000",
                "/snap/gnome-3-38-2004/140",
                "/run/snapd/ns/lxd.mnt",
                "/run/snapd/ns/grafana.mnt",
                "/run/rpc_pipefs",
                "/snap/lxd/25086",
                "/snap/gnome-42-2204/105",
                "/run/credentials/systemd-tmpfiles-setup.service",
                "/run/docker/netns/f09431733be8",
                "/run/snapd/ns/youtube-dl.mnt",
                "/run/user/1001",
                "/var/lib/lxcfs",
                "/run/snapd/ns/discord.mnt",
                "/snap/firefox/2710",
                "/run/docker/netns/811b3ad43e41",
                "/proc",
                "/snap/discord/153",
                "/sys/kernel/security",
                "/snap/gnome-3-28-1804/194",
                "/snap/androidsdk/58",
                "/snap/gnome-42-2204/111",
                "/snap/ipfs-desktop/46",
                "/run/docker/netns/71511a2b9a3f",
                "/snap/gnome-system-monitor/181",
                "/media/user1/8",
                "/run/docker/netns/408adfb70d75",
                "/snap/anbox/186",
                "/snap/androidsdk/52",
                "/run/snapd/ns/chromium.mnt",
                "/run/docker/netns/0411d9291a54",
                "/snap/youtube-dl/4806",
                "/snap/core/15511",
                "/snap/chezmoi/701",
                "/run/docker/netns/default",
                "/run/lock",
                "/snap/ipfs/3744",
                "/snap/cups/950",
                "/snap/tidy-viewer/346",
                "/snap/rustup/1027",
                "/run/docker/netns/f7e3f367409c",
                "/snap/ipfs-desktop/45",
                "/run/docker/netns/947d9dd7b487",
                "/snap/core18/2785",
                "/dev/pts",
                "/snap/bare/5",
                "/run/snapd/ns",
                "/sys/kernel/config",
                "/snap/chezmoi/698",
                "/run/docker/netns/be72d7b69bf3",
                "/run/docker/netns/dc9e10b8df5b",
                "/run/qemu",
                "/run/docker/netns/0be7151d2d53",
                "/snap/lxd/25112",
                "/snap/gtk-common-themes/1534",
                "/snap/cups/962",
                "/run/docker/netns/697ac3b3e53a",
                "/sys/fs/bpf",
                "/snap/hunspell-dictionaries-1-7-2004/2",
                "/snap/ipfs/3709",
                "/sys/fs/pstore",
                "/snap/gnome-3-26-1604/104",
                "/snap/gnome-3-28-1804/198",
                "/snap/code/132",
                "/run/snapd/ns/anbox.mnt",
                "/run/docker/netns/5feb34a331e3",
                "/run/docker/netns/77c3bbc1e594",
                "/sys/kernel/debug",
                "/snap/snap-store/959",
                "/sys/kernel/tracing",
                "/run/snapd/ns/cups.mnt",
                "/snap/tidy-viewer/353",
                "/dev",
                "/snap/croc/107",
                "/run",
                "/run/user/1001/doc",
                "/snap/chromium/2529",
                "/snap/gtk-common-themes/1535",
                "/snap/core22/766",
                "/snap/subsync/11",
                "/proc/fs/nfsd",
                "/sys/fs/cgroup",
                "/snap/firefox/2800",
                "/dev/shm",
                "/snap/flutter/130",
                "/snap/core18/2751",
                "/snap/sosumi/15",
                "/run/docker/netns/13d93813d390",
                "/sys/fs/fuse/connections",
                "/run/credentials/systemd-tmpfiles-setup-dev.service",
                "/snap/core22/750",
                "/run/user/1000/gvfs",
                "/snap/flutter/141",
                "/snap/snap-store/638",
                "/proc/sys/fs/binfmt_misc",
                "/run/docker/netns/28819db76de7",
                "/snap/android-studio/125",
                "/snap/grafana/36",
                "/run/user/1000/doc",
            },
            max_len: 5,
        },
        opt_map_of_alts: None,
        opt_map_of_aliases: None,
        opt_common_snap_dir: Some(
            "/var/lib/docker/btrfs/subvolumes",
        ),
    },
    pwd: PathData {
        path_buf: "/home/user1/c/subtitles",
        metadata: Some(
            PathMetadata {
                size: 965144,
                modify_time: SystemTime {
                    tv_sec: 1688572354,
                    tv_nsec: 450659621,
                },
            },
        ),
    },
}
─────────────────────────────────────────────────────────────
Sun Jun 25 19:10:20 2023  15.7 KiB  "/home/user1/.zshrc"
─────────────────────────────────────────────────────────────
quidnu commented 1 year ago

I do see diff output when running sudo snapper -c home diff 26434..0 ~/.zshrc so at least snapper can read the snapshots.

kimono-koans commented 1 year ago

Okay what I'm seeing is httm is not correctly detecting your snap directories, except re: /var. When httm starts up, it should read all the directories where snapshots could be.

See mine:

 map_of_snaps: MapOfSnaps {
            inner: {
                "/usr/local": [
                    "/usr/local/.zfs/snapshot/snap_2023-06-29-06:54:11_prepApt",
                    "/usr/local/.zfs/snapshot/snap_2023-06-23-06:07:16_prepApt",
                    "/usr/local/.zfs/snapshot/autosnap_2023-05-01_00:00:48_monthly",
                    "/usr/local/.zfs/snapshot/snap_2023-06-23-09:48:01_prepApt",
                    "/usr/local/.zfs/snapshot/autosnap_2023-07-03_07:00:34_hourly",
                    "/usr/local/.zfs/snapshot/autosnap_2023-07-04_04:00:35_hourly",
                    "/usr/local/.zfs/snapshot/snap_2023-06-28-10:16:05_prepApt",
                    "/usr/local/.zfs/snapshot/autosnap_2023-07-03_20:00:32_hourly",
                    "/usr/local/.zfs/snapshot/autosnap_2023-02-01_00:00:30_monthly",
...

And compare to yours:

        map_of_snaps: MapOfSnaps {
            inner: {
                "/": [],
                "/home/user2/spinner": [],
                "/home_spinner/user2": [],
                "/gnu/store": [],
                "/bdata": [],
                "/var": [
                    "/var/lib/docker/btrfs/subvolumes/8",
                    "/var/lib/docker/btrfs/subvolumes/5",
                    "/var/lib/docker/btrfs/subvolumes/a",
                    "/var/lib/docker/btrfs/subvolumes/d",
                ],
                "/var/lib/docker/btrfs": [],
                "/home_spinner": [],
                "/tmp": [],
                "/unet/media": [],
                "/backups": [],
                "/backups/timemachine": [],
                "/unet": [],
                "/home/user1/spinner": [],
                "/vmimages": [],
                "/var/snap/firefox/common/host-hunspell": [],
                "/home": [],
                "/home/user2": [],
            },
        },

A couple things: 1) Are your snapshot volumes perhaps not mounted?, 2) Have you actually mounted these volumes somewhere other than the standard snapper mount location, e.g. .snapshots/...?, 3) Do you have a different snapshot config re: /var? 4) What's your output re: sudo btrfs subvolume list -a -s /home/user1?

quidnu commented 1 year ago
  1. I think they are. For example I can see the contents /home/.snapshots
  2. I think /home/.snapshots is standard
  3. I see that actually it's only the /var/lib/docker subdirectory whose snapshots are showing. /var should have snapshots of its own. docker somehow manages snapshots, I don't remember how, so yes that directory is managed differently.
  4. See below (I only kept one of the var/lib/docker directories, there are many more)
ID 33538 gen 11975279 cgen 1649486 top level 501 otime 2020-07-21 22:00:16 path <FS_TREE>/@home/.snapshots/10250/snapshot
ID 33539 gen 11975279 cgen 1649487 top level 507 otime 2020-07-21 22:00:18 path <FS_TREE>/@user2-home/.snapshots/10249/snapshot
ID 38049 gen 11951047 cgen 1761932 top level 19321 otime 2020-11-02 21:20:06 path <FS_TREE>/@var/lib/docker/btrfs/subvolumes/8e
ID 40887 gen 11975279 cgen 1860234 top level 501 otime 2020-12-09 21:00:13 path <FS_TREE>/@home/.snapshots/11875/snapshot
ID 40888 gen 11975279 cgen 1860235 top level 507 otime 2020-12-09 21:00:13 path <FS_TREE>/@user2-home/.snapshots/11874/snapshot
ID 90907 gen 12172082 cgen 11521348 top level 501 otime 2022-10-01 00:00:04 path <FS_TREE>/@home/.snapshots/27245/snapshot
ID 97716 gen 12172082 cgen 11790497 top level 501 otime 2023-01-01 00:00:08 path <FS_TREE>/@home/.snapshots/29450/snapshot
ID 106853 gen 12172082 cgen 12131740 top level 501 otime 2023-05-01 00:00:06 path <FS_TREE>/@home/.snapshots/32285/snapshot
ID 109171 gen 12272429 cgen 12221077 top level 501 otime 2023-06-01 00:00:05 path <FS_TREE>/@home/.snapshots/33029/snapshot
ID 110476 gen 12272429 cgen 12272266 top level 501 otime 2023-06-19 00:00:08 path <FS_TREE>/@home/.snapshots/33453/snapshot
ID 110990 gen 12292585 cgen 12292584 top level 501 otime 2023-06-26 00:00:07 path <FS_TREE>/@home/.snapshots/33620/snapshot
ID 111355 gen 12307094 cgen 12307093 top level 501 otime 2023-07-01 00:00:05 path <FS_TREE>/@home/.snapshots/33740/snapshot
ID 111356 gen 12307094 cgen 12307094 top level 507 otime 2023-07-01 00:00:08 path <FS_TREE>/@user2-home/.snapshots/33739/snapshot
ID 111357 gen 12307095 cgen 12307095 top level 24696 otime 2023-07-01 00:00:19 path <FS_TREE>/@var/.snapshots/25117/snapshot
ID 111432 gen 12312931 cgen 12310026 top level 501 otime 2023-07-02 00:00:07 path <FS_TREE>/@home/.snapshots/33764/snapshot
ID 111433 gen 12312931 cgen 12310027 top level 507 otime 2023-07-02 00:00:15 path <FS_TREE>/@user2-home/.snapshots/33763/snapshot
ID 111434 gen 12312931 cgen 12310028 top level 24696 otime 2023-07-02 00:00:23 path <FS_TREE>/@var/.snapshots/25141/snapshot
ID 111504 gen 12312931 cgen 12312928 top level 501 otime 2023-07-03 00:00:24 path <FS_TREE>/@home/.snapshots/33788/snapshot
ID 111505 gen 12312967 cgen 12312967 top level 507 otime 2023-07-03 00:00:32 path <FS_TREE>/@user2-home/.snapshots/33787/snapshot
ID 111506 gen 12312968 cgen 12312968 top level 24696 otime 2023-07-03 00:00:54 path <FS_TREE>/@var/.snapshots/25165/snapshot
ID 111576 gen 12315835 cgen 12315834 top level 501 otime 2023-07-04 00:00:04 path <FS_TREE>/@home/.snapshots/33812/snapshot
ID 111577 gen 12315835 cgen 12315835 top level 507 otime 2023-07-04 00:00:08 path <FS_TREE>/@user2-home/.snapshots/33811/snapshot
ID 111578 gen 12315836 cgen 12315836 top level 24696 otime 2023-07-04 00:00:15 path <FS_TREE>/@var/.snapshots/25189/snapshot
ID 111636 gen 12318244 cgen 12318243 top level 501 otime 2023-07-04 20:00:31 path <FS_TREE>/@home/.snapshots/33832/snapshot
ID 111638 gen 12318245 cgen 12318245 top level 24696 otime 2023-07-04 20:00:41 path <FS_TREE>/@var/.snapshots/25209/snapshot
ID 111639 gen 12318362 cgen 12318361 top level 501 otime 2023-07-04 21:00:08 path <FS_TREE>/@home/.snapshots/33833/snapshot
ID 111640 gen 12318362 cgen 12318362 top level 507 otime 2023-07-04 21:00:10 path <FS_TREE>/@user2-home/.snapshots/33832/snapshot
ID 111641 gen 12318363 cgen 12318363 top level 24696 otime 2023-07-04 21:00:23 path <FS_TREE>/@var/.snapshots/25210/snapshot
ID 111642 gen 12318481 cgen 12318480 top level 501 otime 2023-07-04 22:00:02 path <FS_TREE>/@home/.snapshots/33834/snapshot
ID 111643 gen 12318481 cgen 12318481 top level 507 otime 2023-07-04 22:00:05 path <FS_TREE>/@user2-home/.snapshots/33833/snapshot
ID 111644 gen 12318482 cgen 12318482 top level 24696 otime 2023-07-04 22:00:10 path <FS_TREE>/@var/.snapshots/25211/snapshot
ID 111645 gen 12318600 cgen 12318599 top level 501 otime 2023-07-04 23:00:02 path <FS_TREE>/@home/.snapshots/33835/snapshot
ID 111646 gen 12318600 cgen 12318600 top level 507 otime 2023-07-04 23:00:05 path <FS_TREE>/@user2-home/.snapshots/33834/snapshot
ID 111647 gen 12318601 cgen 12318601 top level 24696 otime 2023-07-04 23:00:12 path <FS_TREE>/@var/.snapshots/25212/snapshot
ID 111648 gen 12318719 cgen 12318718 top level 501 otime 2023-07-05 00:00:04 path <FS_TREE>/@home/.snapshots/33836/snapshot
ID 111649 gen 12318719 cgen 12318719 top level 507 otime 2023-07-05 00:00:09 path <FS_TREE>/@user2-home/.snapshots/33835/snapshot
ID 111650 gen 12318720 cgen 12318720 top level 24696 otime 2023-07-05 00:00:18 path <FS_TREE>/@var/.snapshots/25213/snapshot
ID 111651 gen 12318838 cgen 12318837 top level 501 otime 2023-07-05 01:00:02 path <FS_TREE>/@home/.snapshots/33837/snapshot
ID 111652 gen 12318838 cgen 12318838 top level 507 otime 2023-07-05 01:00:05 path <FS_TREE>/@user2-home/.snapshots/33836/snapshot
ID 111653 gen 12318839 cgen 12318839 top level 24696 otime 2023-07-05 01:00:10 path <FS_TREE>/@var/.snapshots/25214/snapshot
ID 111654 gen 12318958 cgen 12318957 top level 501 otime 2023-07-05 02:00:10 path <FS_TREE>/@home/.snapshots/33838/snapshot
ID 111655 gen 12318958 cgen 12318958 top level 507 otime 2023-07-05 02:00:12 path <FS_TREE>/@user2-home/.snapshots/33837/snapshot
ID 111656 gen 12318959 cgen 12318959 top level 24696 otime 2023-07-05 02:00:15 path <FS_TREE>/@var/.snapshots/25215/snapshot
ID 111657 gen 12319078 cgen 12319077 top level 501 otime 2023-07-05 03:00:27 path <FS_TREE>/@home/.snapshots/33839/snapshot
ID 111658 gen 12319078 cgen 12319078 top level 507 otime 2023-07-05 03:00:29 path <FS_TREE>/@user2-home/.snapshots/33838/snapshot
ID 111659 gen 12319079 cgen 12319079 top level 24696 otime 2023-07-05 03:00:37 path <FS_TREE>/@var/.snapshots/25216/snapshot
ID 111660 gen 12319197 cgen 12319196 top level 501 otime 2023-07-05 04:00:25 path <FS_TREE>/@home/.snapshots/33840/snapshot
ID 111661 gen 12319197 cgen 12319197 top level 507 otime 2023-07-05 04:00:28 path <FS_TREE>/@user2-home/.snapshots/33839/snapshot
ID 111662 gen 12319198 cgen 12319198 top level 24696 otime 2023-07-05 04:00:32 path <FS_TREE>/@var/.snapshots/25217/snapshot
ID 111663 gen 12319316 cgen 12319315 top level 501 otime 2023-07-05 05:00:22 path <FS_TREE>/@home/.snapshots/33841/snapshot
ID 111664 gen 12319316 cgen 12319316 top level 507 otime 2023-07-05 05:00:25 path <FS_TREE>/@user2-home/.snapshots/33840/snapshot
ID 111665 gen 12319317 cgen 12319317 top level 24696 otime 2023-07-05 05:00:30 path <FS_TREE>/@var/.snapshots/25218/snapshot
ID 111666 gen 12319435 cgen 12319434 top level 501 otime 2023-07-05 06:00:06 path <FS_TREE>/@home/.snapshots/33842/snapshot
ID 111667 gen 12319435 cgen 12319435 top level 507 otime 2023-07-05 06:00:09 path <FS_TREE>/@user2-home/.snapshots/33841/snapshot
ID 111668 gen 12319436 cgen 12319436 top level 24696 otime 2023-07-05 06:00:15 path <FS_TREE>/@var/.snapshots/25219/snapshot
ID 111669 gen 12319555 cgen 12319554 top level 501 otime 2023-07-05 07:00:15 path <FS_TREE>/@home/.snapshots/33843/snapshot
ID 111670 gen 12319555 cgen 12319555 top level 507 otime 2023-07-05 07:00:17 path <FS_TREE>/@user2-home/.snapshots/33842/snapshot
ID 111671 gen 12319557 cgen 12319556 top level 24696 otime 2023-07-05 07:00:23 path <FS_TREE>/@var/.snapshots/25220/snapshot
ID 111672 gen 12319675 cgen 12319674 top level 501 otime 2023-07-05 08:00:25 path <FS_TREE>/@home/.snapshots/33844/snapshot
ID 111673 gen 12319675 cgen 12319675 top level 507 otime 2023-07-05 08:00:29 path <FS_TREE>/@user2-home/.snapshots/33843/snapshot
ID 111674 gen 12319677 cgen 12319676 top level 24696 otime 2023-07-05 08:00:40 path <FS_TREE>/@var/.snapshots/25221/snapshot
ID 111675 gen 12319793 cgen 12319792 top level 501 otime 2023-07-05 09:00:03 path <FS_TREE>/@home/.snapshots/33845/snapshot
ID 111676 gen 12319793 cgen 12319793 top level 507 otime 2023-07-05 09:00:07 path <FS_TREE>/@user2-home/.snapshots/33844/snapshot
ID 111677 gen 12319795 cgen 12319794 top level 24696 otime 2023-07-05 09:00:31 path <FS_TREE>/@var/.snapshots/25222/snapshot
ID 111678 gen 12319914 cgen 12319913 top level 501 otime 2023-07-05 10:00:28 path <FS_TREE>/@home/.snapshots/33846/snapshot
ID 111679 gen 12319915 cgen 12319914 top level 507 otime 2023-07-05 10:00:34 path <FS_TREE>/@user2-home/.snapshots/33845/snapshot
ID 111680 gen 12319916 cgen 12319915 top level 24696 otime 2023-07-05 10:00:41 path <FS_TREE>/@var/.snapshots/25223/snapshot
ID 111681 gen 12320032 cgen 12320031 top level 501 otime 2023-07-05 11:00:10 path <FS_TREE>/@home/.snapshots/33847/snapshot
ID 111682 gen 12320033 cgen 12320032 top level 507 otime 2023-07-05 11:00:13 path <FS_TREE>/@user2-home/.snapshots/33846/snapshot
ID 111683 gen 12320034 cgen 12320033 top level 24696 otime 2023-07-05 11:00:21 path <FS_TREE>/@var/.snapshots/25224/snapshot
ID 111684 gen 12320198 cgen 12320197 top level 501 otime 2023-07-05 12:00:07 path <FS_TREE>/@home/.snapshots/33848/snapshot
ID 111685 gen 12320199 cgen 12320198 top level 507 otime 2023-07-05 12:00:29 path <FS_TREE>/@user2-home/.snapshots/33847/snapshot
ID 111686 gen 12320201 cgen 12320201 top level 24696 otime 2023-07-05 12:01:44 path <FS_TREE>/@var/.snapshots/25225/snapshot
ID 111687 gen 12320317 cgen 12320316 top level 501 otime 2023-07-05 13:00:16 path <FS_TREE>/@home/.snapshots/33849/snapshot
ID 111688 gen 12320318 cgen 12320317 top level 507 otime 2023-07-05 13:00:18 path <FS_TREE>/@user2-home/.snapshots/33848/snapshot
ID 111689 gen 12320318 cgen 12320318 top level 24696 otime 2023-07-05 13:00:24 path <FS_TREE>/@var/.snapshots/25226/snapshot
ID 111690 gen 12320437 cgen 12320436 top level 501 otime 2023-07-05 14:00:24 path <FS_TREE>/@home/.snapshots/33850/snapshot
ID 111691 gen 12320438 cgen 12320437 top level 507 otime 2023-07-05 14:00:27 path <FS_TREE>/@user2-home/.snapshots/33849/snapshot
ID 111692 gen 12320438 cgen 12320438 top level 24696 otime 2023-07-05 14:00:31 path <FS_TREE>/@var/.snapshots/25227/snapshot
ID 111693 gen 12320556 cgen 12320555 top level 501 otime 2023-07-05 15:00:25 path <FS_TREE>/@home/.snapshots/33851/snapshot
ID 111694 gen 12320557 cgen 12320556 top level 507 otime 2023-07-05 15:00:28 path <FS_TREE>/@user2-home/.snapshots/33850/snapshot
ID 111695 gen 12320557 cgen 12320557 top level 24696 otime 2023-07-05 15:00:39 path <FS_TREE>/@var/.snapshots/25228/snapshot
ID 111697 gen 12320679 cgen 12320679 top level 507 otime 2023-07-05 16:00:08 path <FS_TREE>/@user2-home/.snapshots/33851/snapshot
ID 111698 gen 12320680 cgen 12320680 top level 24696 otime 2023-07-05 16:00:16 path <FS_TREE>/@var/.snapshots/25229/snapshot
ID 111699 gen 12320798 cgen 12320797 top level 501 otime 2023-07-05 17:00:04 path <FS_TREE>/@home/.snapshots/33852/snapshot
ID 111700 gen 12320799 cgen 12320799 top level 507 otime 2023-07-05 17:00:36 path <FS_TREE>/@user2-home/.snapshots/33852/snapshot
ID 111701 gen 12320800 cgen 12320800 top level 24696 otime 2023-07-05 17:00:54 path <FS_TREE>/@var/.snapshots/25230/snapshot
kimono-koans commented 1 year ago
  1. What's your output re: sudo btrfs subvolume list -a -s /home/user1?

Your output doesn't look like mine. My expectation is sudo btrfs subvolume list -a -s /home/user1 should look like:

...
ID 90907 gen 12172082 cgen 11521348 top level 501 otime 2022-10-01 00:00:04 path @home/.snapshots/27245/snapshot
ID 97716 gen 12172082 cgen 11790497 top level 501 otime 2023-01-01 00:00:08 path @home/.snapshots/29450/snapshot
ID 106853 gen 12172082 cgen 12131740 top level 501 otime 2023-05-01 00:00:06 path @home/.snapshots/32285/snapshot
ID 109171 gen 12272429 cgen 12221077 top level 501 otime 2023-06-01 00:00:05 path @home/.snapshots/33029/snapshot
...

It should not contain info re: other datasets, and should not show the name from the dataset root. Did you do anything differently?

quidnu commented 1 year ago

I unintentionally ran sudo btrfs subvolume list -a -s /home/ but the the output is the same as sudo btrfs subvolume list -a -s /home/user1'

btrfs-progs v6.2

quidnu commented 1 year ago

The btrfs filesystem contains multiple subvolumes like @home, @var etc.

So the /etc/fstab is something like

UUID=123 /var btrfs defaults,subvol=@var 0 1
UUID=123 /home btrfs defaults,subvol=@home 0 1
kimono-koans commented 1 year ago

Okay, I think I have a clear idea about what went wrong. btrfs-progs decided to break the way it previously did things. Why? I know not why. I swear btrfs feels, without a doubt, like the most unintuitive and broken thing sometimes.

I think I have an idea of how to fix, but it's gonna take some time. I'll let you know.

quidnu commented 1 year ago

Thank you, I don't have any imminent need to use httm, I just wanted to get familiar with it so I know how to use it when I do.

kimono-koans commented 1 year ago

This commit should fix your issue: https://github.com/kimono-koans/httm/commit/537467cfb93ebdb77cbd1cf8be953ae56c8d4ede

quidnu commented 1 year ago

Looks like it works, thanks!