mirror of https://github.com/digint/btrbk
lsbtr: add -r, --related option
parent
f40e3adce3
commit
1910036a03
45
btrbk
45
btrbk
|
@ -333,11 +333,13 @@ sub HELP_MESSAGE
|
||||||
#80-----------------------------------------------------------------------------
|
#80-----------------------------------------------------------------------------
|
||||||
if($program_name eq "lsbtr") {
|
if($program_name eq "lsbtr") {
|
||||||
print STDERR <<"END_HELP_LSBTR";
|
print STDERR <<"END_HELP_LSBTR";
|
||||||
usage: lsbtr [options] [path]...
|
usage: lsbtr [options] [(<path> | <url>)...]
|
||||||
|
or: lsbtr -r [options] <subvolume>
|
||||||
|
|
||||||
options:
|
options:
|
||||||
-h, --help display this help message
|
-h, --help display this help message
|
||||||
--version display version information
|
--version display version information
|
||||||
|
-r, --related print related subvolumes
|
||||||
-l, --long use long listing format
|
-l, --long use long listing format
|
||||||
-u, --uuid print uuid table (parent/received relations)
|
-u, --uuid print uuid table (parent/received relations)
|
||||||
--raw print raw table format
|
--raw print raw table format
|
||||||
|
@ -5013,6 +5015,7 @@ MAIN:
|
||||||
my ($config_cmdline, $lockfile_cmdline, $print_schedule,
|
my ($config_cmdline, $lockfile_cmdline, $print_schedule,
|
||||||
$preserve_snapshots, $preserve_backups, $wipe_snapshots, $skip_snapshots, $skip_backups,
|
$preserve_snapshots, $preserve_backups, $wipe_snapshots, $skip_snapshots, $skip_backups,
|
||||||
$archive_raw,
|
$archive_raw,
|
||||||
|
$ls_related,
|
||||||
$resume_only_DEPRECATED, # as of btrbk-v0.26.0
|
$resume_only_DEPRECATED, # as of btrbk-v0.26.0
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -5035,6 +5038,7 @@ MAIN:
|
||||||
);
|
);
|
||||||
push @cmdline_options, ($program_name eq "lsbtr") ? (
|
push @cmdline_options, ($program_name eq "lsbtr") ? (
|
||||||
# "lsbtr" options
|
# "lsbtr" options
|
||||||
|
'related|r' => \$ls_related,
|
||||||
'long|l' => sub { $output_format = "table" },
|
'long|l' => sub { $output_format = "table" },
|
||||||
'uuid|u' => sub { $output_format = "long" },
|
'uuid|u' => sub { $output_format = "long" },
|
||||||
'raw' => sub { $output_format = "raw" },
|
'raw' => sub { $output_format = "raw" },
|
||||||
|
@ -5140,6 +5144,7 @@ MAIN:
|
||||||
$action_ls = 1;
|
$action_ls = 1;
|
||||||
$fallback_default_config = 1;
|
$fallback_default_config = 1;
|
||||||
$args_expected_min = 1;
|
$args_expected_min = 1;
|
||||||
|
$args_expected_max = 1 if($ls_related);
|
||||||
@subvol_args = @ARGV;
|
@subvol_args = @ARGV;
|
||||||
$subvol_args_allow_relative = 1;
|
$subvol_args_allow_relative = 1;
|
||||||
}
|
}
|
||||||
|
@ -5386,6 +5391,44 @@ MAIN:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if($action_ls && $ls_related)
|
||||||
|
{
|
||||||
|
#
|
||||||
|
# print related subvolumes for subvolume
|
||||||
|
#
|
||||||
|
my $vol = vinfo($subvol_args[0], $config);
|
||||||
|
unless(vinfo_init_root($vol)) {
|
||||||
|
ERROR "Failed to fetch subvolume detail for: $vol->{PRINT}", @stderr;
|
||||||
|
exit 1;
|
||||||
|
}
|
||||||
|
my @data;
|
||||||
|
foreach my $node (@{get_related_nodes($vol)}) {
|
||||||
|
foreach my $fs_info (_fs_info($node)) {
|
||||||
|
my $mountinfo = $fs_info->{mountinfo} // {};
|
||||||
|
push @data, {
|
||||||
|
%{$node}, # copy node
|
||||||
|
top => $node->{top_level}, # alias (narrow column)
|
||||||
|
mount_source => $mountinfo->{mount_source},
|
||||||
|
mount_point => $mountinfo->{mount_point},
|
||||||
|
mount_subvolid => $mountinfo->{MNTOPS}{subvolid}, # $fs_info->{mountpoint_node}{id}
|
||||||
|
mount_subvol => $mountinfo->{MNTOPS}{subvol},
|
||||||
|
subvolume_path => $node->{path},
|
||||||
|
subvolume_rel_path => $node->{REL_PATH},
|
||||||
|
host => $vol->{HOST},
|
||||||
|
path => $fs_info->{path},
|
||||||
|
flags => ($node->{readonly} ? "readonly" : undef),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
my @sorted = sort { ($a->{path} cmp $b->{path}) } @data;
|
||||||
|
|
||||||
|
DEBUG "Listing " . scalar(@sorted) . " related subvolumes for: $vol->{PRINT}";
|
||||||
|
$output_format ||= "short";
|
||||||
|
print_formatted("fs_list", \@sorted, no_header => !scalar(@sorted));
|
||||||
|
|
||||||
|
exit 0;
|
||||||
|
}
|
||||||
|
|
||||||
if($action_ls)
|
if($action_ls)
|
||||||
{
|
{
|
||||||
#
|
#
|
||||||
|
|
|
@ -16,22 +16,20 @@ SYNOPSIS
|
||||||
--------
|
--------
|
||||||
|
|
||||||
[verse]
|
[verse]
|
||||||
lsbtr [-h|--help] [--version]
|
lsbtr [options] [(<path> | <url>)...]
|
||||||
[-l|--long] [-u|--uuid] [--raw]
|
lsbtr -r [options] <subvolume>
|
||||||
[-v|--verbose]
|
|
||||||
[-c|--config <file>]
|
|
||||||
[--override <config_option>=<value>]
|
|
||||||
[<path>|<url>...]
|
|
||||||
|
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
List btrfs subvolumes and their mount points visible by the file
|
List btrfs subvolumes and their mount points visible by the file
|
||||||
system below '<path>'.
|
system below '<path>', or, if the '-r' option is present, list all
|
||||||
|
related subvolumes of '<subvolume>'.
|
||||||
|
|
||||||
*lsbtr* is part of *btrbk* (basically a shortcut for "btrbk ls"), and
|
*lsbtr* is part of *btrbk* (basically a more powerful variant of
|
||||||
takes some global configuration options from btrbk.conf(5) if present.
|
"btrbk ls"), and takes some global configuration options from
|
||||||
|
btrbk.conf(5) if present.
|
||||||
|
|
||||||
*lsbtr* requires 'root privileges' to run correctly. Alternatively,
|
*lsbtr* requires 'root privileges' to run correctly. Alternatively,
|
||||||
consider using "btrfs-progs-sudo" or "btrfs-progs-btrbk" backends,
|
consider using "btrfs-progs-sudo" or "btrfs-progs-btrbk" backends,
|
||||||
|
@ -48,6 +46,10 @@ OPTIONS
|
||||||
--version::
|
--version::
|
||||||
Prints the btrbk version.
|
Prints the btrbk version.
|
||||||
|
|
||||||
|
-r, --related::
|
||||||
|
Print (deep) related subvolumes. Includes the whole "parent of
|
||||||
|
parent" and "children of children" chain.
|
||||||
|
|
||||||
-l, --long::
|
-l, --long::
|
||||||
Print output in long table format (additionally print subvolume
|
Print output in long table format (additionally print subvolume
|
||||||
path).
|
path).
|
||||||
|
|
Loading…
Reference in New Issue