Skip to content

Commit

Permalink
mxproxmox: Add command check-pbackup
Browse files Browse the repository at this point in the history
Add new command `check-pbackup`, which makes suggestions, what jobs to
add to /etc/mxproxmox/backup-list.dat based on pbackup configuration.

The output consists of out-commented lines which can be added to
/etc/mxproxmox/backup-list.dat and uncommented one by one to phase in
new proxmox backup jobs.
  • Loading branch information
donald committed Dec 7, 2022
1 parent 641f2ac commit 24ee883
Showing 1 changed file with 53 additions and 0 deletions.
53 changes: 53 additions & 0 deletions mxproxmox/mxproxmox
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ usage: $0 cmd
$0 client [cmd...] : call proxmox-backup-client (add key file if required)
$0 tclient [cmd...] : same with workaround for reiserfs /tmp
$0 active-jobs : list jobs active on server
$0 check-pbackup : cross-check pbackup and mxproxmox jobs
Examples:
Expand Down Expand Up @@ -248,6 +249,55 @@ sub cmd_local_backups {
}
}

sub cmd_check_pbackup {

read_backup_list();

my %jobs;
for my $p (
do_map('home', 'auto.home', 0),
do_map('cfdl', 'auto.confidential', 0),
do_map('prj', 'auto.project', 0),
do_map('pkg', 'auto.package', 0),
do_map('cfdl', 'auto.confidential', 0),
do_map('src', 'auto.src', 0),
) {
my ($ident, $path) = @$p;
$jobs{$ident} = $path if $ident =~ /^home_/;
$jobs{$ident} = $path if exists $INCLUDE{$ident};
}

my %pbackup_jobs;
open my $pipe, '-|', '/project/admin/pbackup/bin/pbackup', 'parse-jobs' or die "/project/admin/pbackup/bin/pbackup: $!\n";
for (<$pipe>) {
chomp;
my ($ident, $path) = split " ", $_, 2;
next if $ident =~ /^sys_/;
$path =~ s/^[a-z0-9]+://i;
$pbackup_jobs{$ident} = $path;
}
close $pipe or exit 1;

print "\n\n# The following output war generated by `mxproxmox check-pbackup`:\n\n";

for my $ident (sort keys %jobs) {
if (!exists $pbackup_jobs{$ident}) {
print "# consider to remove $ident, because it is not a a pbackup job\n";
}
}
print "\n";

for my $ident (sort keys %pbackup_jobs) {
if (exists $jobs{$ident}) {
if ($pbackup_jobs{$ident} ne $jobs{$ident}) {
warn "$ident: path differ. pbackup: ", $pbackup_jobs{$ident}, " proxmox: ", $jobs{$ident}, "\n";
}
} else {
printf "# %-30s # consider to add, because its a pbackup job\n", $ident;
}
}
}

sub cmd_client {
my @cmd = ('proxmox-backup-client', @_);
if ( $_[0] =~ /^(catalog|restore|mount|map|backup)$/ ) {
Expand Down Expand Up @@ -291,6 +341,9 @@ if ($cmd eq 'api') {
read_cred_file();
init_ua();
cmd_active_jobs(@ARGV);
} elsif ($cmd eq 'check-pbackup') {
@ARGV==0 or die USAGE;
cmd_check_pbackup(@ARGV);
} else {
die USAGE;
}

0 comments on commit 24ee883

Please sign in to comment.