package App::Beam::Backup; use strict; use Carp; require App::Beam; our @ISA = qw(App::Beam); use Unix::Sysexits; use Getopt::Long qw(GetOptionsFromArray); use App::Beam::History::Entry qw(state_string); =head1 NAME beam backup - create new backup =head1 SYNOPSIS B [I] B =head1 DESCRIPTION =head1 OPTIONS =over 4 =item B<-r>, B<--redo> Recreate previous backup level. =back Informational options =over 4 =item B<-h> Print a short help summary. =item B<--help> Display manpage. =item B<--usage> Print a short command line usage reminder. =back =cut sub run { my $self = shift; my $redo; GetOptionsFromArray(\@_, "redo|r" => \$redo) or exit(EX_USAGE); if ($redo) { $self->abend(EX_USAGE, "no previous backup to redo") unless $self->{history}->top(1); $self->{history}->drop; $self->{history}->top->reset; } my @item_names = $self->check_items(@_); $self->debug(1, ($redo ? "recreating backup " : "creating backup ") . $self->format_name); foreach my $name (@item_names) { $self->debug(1, "backing up $name"); my $backend = $self->{backend}{$self->get("item.$name.backend")}; my $item = $self->{history}->top->begin_item($name); my $ret = $backend->backup($name, $item); $self->{history}->top->finish_item($name, $ret); $self->update_status($ret); $self->debug(1, "$name: " . state_string($ret)); } } 1;