mirror of https://github.com/digint/btrbk
btrbk: implemented action "info", executing "btrfs filesystem show/df"
parent
8f81547d6f
commit
029bac98e3
95
btrbk
95
btrbk
|
@ -112,6 +112,7 @@ sub HELP_MESSAGE
|
||||||
print STDERR "commands:\n";
|
print STDERR "commands:\n";
|
||||||
print STDERR " execute perform backup operations as defined in configuration\n";
|
print STDERR " execute perform backup operations as defined in configuration\n";
|
||||||
print STDERR " dryrun don't run btrfs commands, just show what would be executed\n";
|
print STDERR " dryrun don't run btrfs commands, just show what would be executed\n";
|
||||||
|
print STDERR " info print useful filesystem information\n";
|
||||||
print STDERR " tree shows backup tree\n";
|
print STDERR " tree shows backup tree\n";
|
||||||
print STDERR " diff <from> <to> shows new files since subvolume <from> for subvolume <to>\n";
|
print STDERR " diff <from> <to> shows new files since subvolume <from> for subvolume <to>\n";
|
||||||
print STDERR "\n";
|
print STDERR "\n";
|
||||||
|
@ -456,6 +457,32 @@ sub parse_config(@)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sub btr_filesystem_show_all_local()
|
||||||
|
{
|
||||||
|
return run_cmd("/sbin/btrfs filesystem show", 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sub btr_filesystem_show($;$)
|
||||||
|
{
|
||||||
|
my $vol = shift || die;
|
||||||
|
my $config = shift;
|
||||||
|
my ($rsh, $real_vol) = get_rsh($vol, $config);
|
||||||
|
my $ret = run_cmd("$rsh /sbin/btrfs filesystem show $real_vol", 1);
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sub btr_filesystem_df($;$@)
|
||||||
|
{
|
||||||
|
my $vol = shift || die;
|
||||||
|
my $config = shift;
|
||||||
|
my ($rsh, $real_vol) = get_rsh($vol, $config);
|
||||||
|
my $ret = run_cmd("$rsh /sbin/btrfs filesystem df $real_vol", 1);
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
sub btr_subvolume_list($;$@)
|
sub btr_subvolume_list($;$@)
|
||||||
{
|
{
|
||||||
my $vol = shift || die;
|
my $vol = shift || die;
|
||||||
|
@ -925,12 +952,16 @@ MAIN:
|
||||||
}
|
}
|
||||||
|
|
||||||
my $action_execute;
|
my $action_execute;
|
||||||
|
my $action_info;
|
||||||
my $action_tree;
|
my $action_tree;
|
||||||
my $action_diff;
|
my $action_diff;
|
||||||
if(($command eq "execute") || ($command eq "dryrun")) {
|
if(($command eq "execute") || ($command eq "dryrun")) {
|
||||||
$action_execute = 1;
|
$action_execute = 1;
|
||||||
$dryrun = 1 if($command eq "dryrun");
|
$dryrun = 1 if($command eq "dryrun");
|
||||||
}
|
}
|
||||||
|
elsif ($command eq "info") {
|
||||||
|
$action_info = 1;
|
||||||
|
}
|
||||||
elsif ($command eq "tree") {
|
elsif ($command eq "tree") {
|
||||||
$action_tree = 1;
|
$action_tree = 1;
|
||||||
}
|
}
|
||||||
|
@ -1040,7 +1071,7 @@ MAIN:
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# fill vol_info hash, basic checks on configuration
|
# parse config file
|
||||||
#
|
#
|
||||||
my $config = parse_config(@config_src);
|
my $config = parse_config(@config_src);
|
||||||
unless($config) {
|
unless($config) {
|
||||||
|
@ -1051,6 +1082,68 @@ MAIN:
|
||||||
ERROR "No volumes defined in configuration file";
|
ERROR "No volumes defined in configuration file";
|
||||||
exit 1;
|
exit 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if($action_info)
|
||||||
|
{
|
||||||
|
#
|
||||||
|
# print filesystem information
|
||||||
|
#
|
||||||
|
print "================================================================================\n";
|
||||||
|
print "Filesystem information ($version_info)\n\n";
|
||||||
|
print " Date: " . localtime($start_time) . "\n";
|
||||||
|
print " Config: $config->{SRC_FILE}\n";
|
||||||
|
print "================================================================================\n";
|
||||||
|
|
||||||
|
print "\n--------------------------------------------------------------------------------\n";
|
||||||
|
print "All local btrfs filesystems\n";
|
||||||
|
print "--------------------------------------------------------------------------------\n";
|
||||||
|
print btr_filesystem_show_all_local();
|
||||||
|
print "\n";
|
||||||
|
|
||||||
|
my %processed;
|
||||||
|
foreach my $config_vol (@{$config->{VOLUME}})
|
||||||
|
{
|
||||||
|
my $sroot = $config_vol->{sroot} || die;
|
||||||
|
unless($processed{$sroot})
|
||||||
|
{
|
||||||
|
print "\n--------------------------------------------------------------------------------\n";
|
||||||
|
print "Source volume: $sroot\n";
|
||||||
|
print "--------------------------------------------------------------------------------\n";
|
||||||
|
print btr_filesystem_show($sroot, $config_vol);
|
||||||
|
print "\n\n";
|
||||||
|
print btr_filesystem_df($sroot, $config_vol);
|
||||||
|
print "\n";
|
||||||
|
$processed{$sroot} = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach my $config_vol (@{$config->{VOLUME}}) {
|
||||||
|
my $sroot = $config_vol->{sroot} || die;
|
||||||
|
foreach my $config_subvol (@{$config_vol->{SUBVOLUME}}) {
|
||||||
|
foreach my $config_target (@{$config_subvol->{TARGET}})
|
||||||
|
{
|
||||||
|
my $droot = $config_target->{droot} || die;
|
||||||
|
unless($processed{$droot})
|
||||||
|
{
|
||||||
|
print "\n--------------------------------------------------------------------------------\n";
|
||||||
|
print "Target volume: $droot\n";
|
||||||
|
print " ^--- $sroot\n";
|
||||||
|
print "--------------------------------------------------------------------------------\n";
|
||||||
|
print btr_filesystem_df($droot, $config_target);
|
||||||
|
print "\n";
|
||||||
|
$processed{$droot} = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exit 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# fill vol_info hash, basic checks on configuration
|
||||||
|
#
|
||||||
foreach my $config_vol (@{$config->{VOLUME}})
|
foreach my $config_vol (@{$config->{VOLUME}})
|
||||||
{
|
{
|
||||||
my $sroot = $config_vol->{sroot} || die;
|
my $sroot = $config_vol->{sroot} || die;
|
||||||
|
|
Loading…
Reference in New Issue