I'm using httm 0.43.2 on a Debian 12 system, with a BTRFS file system and btrbk for creating snapshots. It works perfectly for showing the older versions living in my snapshots directory, which is located at @snapshots and mounted on /snapshots. My data is located at @data and mounted on /data. On a separate drive, I have @btrbk mounted on /btrbk. This is where I send "backup" snapshots.
Here's an example of it working as expected using snapshots in /snapshots.
But I can't seem to get httm to look at /btrbk on the other drive.
/snapshots and /btrbk look the same... a long list of snapshots.
I'm guessing that httm is trying to look in obvious places for snapshots, and doesn't think to look in some other place for them. Which is fine -- but is there a way to tell it to look there?
Here's the debug output. Interesting that it appears to believe /btrbk is a live subvolume that might have its own snapshots.
NOTICE: Falling back to detection of btrfs snapshot mounts perhaps defined by Snapper re: mount: "/more"
DEBUG: Base mount: "/data", Base subvol: "/@data", Snap Relative Path: "@snapshots/@data.20240307T0907"
DEBUG: Joined path: "/snapshots/@data.20240307T0907"
DEBUG: Base mount: "/data", Base subvol: "/@data", Snap Relative Path: "@snapshots/data.20241005T1315"
DEBUG: Joined path: "/snapshots/data.20241005T1315"
DEBUG: Base mount: "/data", Base subvol: "/@data", Snap Relative Path: "@snapshots/data.20241003T2215"
DEBUG: Joined path: "/snapshots/data.20241003T2215"
DEBUG: Base mount: "/data", Base subvol: "/@data", Snap Relative Path: "@snapshots/data.20241004T0015"
DEBUG: Joined path: "/snapshots/data.20241004T0015"
DEBUG: Base mount: "/data", Base subvol: "/@data", Snap Relative Path: "@snapshots/data.20241005T1245"
DEBUG: Joined path: "/snapshots/data.20241005T1245"
DEBUG: Base mount: "/data", Base subvol: "/@data", Snap Relative Path: "@snapshots/data.20241002T2351"
DEBUG: Joined path: "/snapshots/data.20241002T2351"
DEBUG: Base mount: "/data", Base subvol: "/@data", Snap Relative Path: "@snapshots/data.20241005T1215"
DEBUG: Joined path: "/snapshots/data.20241005T1215"
DEBUG: Base mount: "/data", Base subvol: "/@data", Snap Relative Path: "@snapshots/data.20241005T1345"
DEBUG: Joined path: "/snapshots/data.20241005T1345"
DEBUG: Base mount: "/data", Base subvol: "/@data", Snap Relative Path: "@snapshots/data.20241005T0015"
DEBUG: Joined path: "/snapshots/data.20241005T0015"
DEBUG: Base mount: "/data", Base subvol: "/@data", Snap Relative Path: "@snapshots/data.20240804T0000"
DEBUG: Joined path: "/snapshots/data.20240804T0000"
WARN: httm relies on the user (and/or the filesystem's auto-mounter) to mount snapshots. Make certain any snapshots the user may want to view are mounted, or are able to be mounted, and/or the user has the correct permissions to view.
WARN: Mount "/backup" appears to have no snapshots available.
WARN: Mount "/btrbk" appears to have no snapshots available.
WARN: Mount "/extra" appears to have no snapshots available.
WARN: Mount "/more" appears to have no snapshots available.
WARN: Mount "/snapshots" appears to have no snapshots available.
Config {
paths: [
PathData {
path_buf: "/data/btrfs_free.sh",
metadata: Some(
PathMetadata {
size: 1304,
modify_time: SystemTime {
tv_sec: 1724480830,
tv_nsec: 733481865,
},
},
),
},
],
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,
opt_no_clones: false,
dedup_by: Metadata,
opt_bulk_exclusion: None,
opt_last_snap: None,
opt_preview: None,
opt_deleted_mode: None,
opt_requested_dir: None,
requested_utc_offset: -05:00:00,
exec_mode: BasicDisplay,
print_mode: Formatted(
Default,
),
dataset_collection: FilesystemInfo {
map_of_datasets: MapOfDatasets {
inner: {
"/backup": DatasetMetadata {
source: "/dev/sdc1",
fs_type: Btrfs(
Some(
BtrfsAdditionalData {
base_subvol: "<FS_TREE>",
snap_names: OnceLock(
<uninit>,
),
},
),
),
link_type: Local,
},
"/btrbk": DatasetMetadata {
source: "/dev/sdc1",
fs_type: Btrfs(
Some(
BtrfsAdditionalData {
base_subvol: "/@btrbk",
snap_names: OnceLock(
<uninit>,
),
},
),
),
link_type: Local,
},
"/data": DatasetMetadata {
source: "/dev/sdb",
fs_type: Btrfs(
Some(
BtrfsAdditionalData {
base_subvol: "/@data",
snap_names: OnceLock(
{
"/snapshots/@data.20240307T0907": "@snapshots/@data.20240307T0907",
"/snapshots/data.20240804T0000": "@snapshots/data.20240804T0000",
"/snapshots/data.20241002T2351": "@snapshots/data.20241002T2351",
"/snapshots/data.20241003T2215": "@snapshots/data.20241003T2215",
"/snapshots/data.20241004T0015": "@snapshots/data.20241004T0015",
"/snapshots/data.20241005T0015": "@snapshots/data.20241005T0015",
"/snapshots/data.20241005T1215": "@snapshots/data.20241005T1215",
"/snapshots/data.20241005T1245": "@snapshots/data.20241005T1245",
"/snapshots/data.20241005T1315": "@snapshots/data.20241005T1315",
"/snapshots/data.20241005T1345": "@snapshots/data.20241005T1345",
},
),
},
),
),
link_type: Local,
},
"/extra": DatasetMetadata {
source: "/dev/sdc3",
fs_type: Btrfs(
Some(
BtrfsAdditionalData {
base_subvol: "<FS_TREE>",
snap_names: OnceLock(
<uninit>,
),
},
),
),
link_type: Local,
},
"/more": DatasetMetadata {
source: "/dev/sde2",
fs_type: Btrfs(
Some(
BtrfsAdditionalData {
base_subvol: "/@more",
snap_names: OnceLock(
<uninit>,
),
},
),
),
link_type: Local,
},
"/snapshots": DatasetMetadata {
source: "/dev/sdb",
fs_type: Btrfs(
Some(
BtrfsAdditionalData {
base_subvol: "/@snapshots",
snap_names: OnceLock(
<uninit>,
),
},
),
),
link_type: Local,
},
},
},
map_of_snaps: MapOfSnaps {
inner: {
"/backup": [],
"/btrbk": [],
"/data": [
"/snapshots/@data.20240307T0907",
"/snapshots/data.20240804T0000",
"/snapshots/data.20241002T2351",
"/snapshots/data.20241003T2215",
"/snapshots/data.20241004T0015",
"/snapshots/data.20241005T0015",
"/snapshots/data.20241005T1215",
"/snapshots/data.20241005T1245",
"/snapshots/data.20241005T1315",
"/snapshots/data.20241005T1345",
],
"/extra": [],
"/more": [],
"/snapshots": [],
},
},
filter_dirs: FilterDirs {
inner: {
"/",
"/dev",
"/dev/.lxc/proc",
"/dev/.lxc/sys",
"/dev/console",
"/dev/hugepages",
"/dev/mqueue",
"/dev/net/tun",
"/dev/ptmx",
"/dev/pts",
"/dev/shm",
"/dev/tty1",
"/dev/tty2",
"/proc",
"/proc/cpuinfo",
"/proc/diskstats",
"/proc/fs/nfsd",
"/proc/loadavg",
"/proc/meminfo",
"/proc/slabinfo",
"/proc/stat",
"/proc/swaps",
"/proc/sys",
"/proc/sys/kernel/random/boot_id",
"/proc/sys/net",
"/proc/sysrq-trigger",
"/proc/uptime",
"/run",
"/run/credentials/systemd-sysctl.service",
"/run/credentials/systemd-sysusers.service",
"/run/credentials/systemd-tmpfiles-setup-dev.service",
"/run/credentials/systemd-tmpfiles-setup.service",
"/run/lock",
"/run/rpc_pipefs",
"/run/user/1000",
"/sys",
"/sys/devices/system/cpu",
"/sys/devices/virtual/net",
"/sys/fs/cgroup",
"/sys/fs/fuse/connections",
},
},
opt_map_of_alts: None,
opt_map_of_aliases: None,
opt_common_snap_dir: Some(
"/snapshots",
),
opt_alt_store: None,
},
pwd: "/home/xxxx",
}
I'm using httm 0.43.2 on a Debian 12 system, with a BTRFS file system and btrbk for creating snapshots. It works perfectly for showing the older versions living in my snapshots directory, which is located at
@snapshotsand mounted on /snapshots. My data is located at@dataand mounted on /data. On a separate drive, I have@btrbkmounted on /btrbk. This is where I send "backup" snapshots.For my local drive, these are both top-level subvolumes:
For my backup drive it is as well:
ID 257 gen 16551 top level 5 path @btrbkHere's an example of it working as expected using snapshots in /snapshots.
But I can't seem to get httm to look at /btrbk on the other drive.
I tried map-aliases but no luck:
/snapshots and /btrbk look the same... a long list of snapshots.
I'm guessing that httm is trying to look in obvious places for snapshots, and doesn't think to look in some other place for them. Which is fine -- but is there a way to tell it to look there?
Here's the debug output. Interesting that it appears to believe /btrbk is a live subvolume that might have its own snapshots.