diff options
-rwxr-xr-x | perl-install/standalone/drakbackup | 116 |
1 files changed, 85 insertions, 31 deletions
diff --git a/perl-install/standalone/drakbackup b/perl-install/standalone/drakbackup index e42126615..9a947f68c 100755 --- a/perl-install/standalone/drakbackup +++ b/perl-install/standalone/drakbackup @@ -785,7 +785,7 @@ sub do_expect { #- temporarily disabled # use Expect; -show_warning("w", __("Sorry, perl-Expect is not installed/enabled. To use\nthis feature, install perl-Expect and comment lines 702-704,\n as well as 718,719. Then uncomment line 717.")); +show_warning("w", __("Sorry, perl-Expect is not installed/enabled. To use\nthis feature, install perl-Expect and comment lines 772-774,\n as well as 788,789. Then uncomment line 787.")); return(1); #- for debugging set to 1 @@ -847,13 +847,13 @@ return(1); [ '-re', 'No such file or directory', sub { $bad_dir = 1; exp_continue } ], # [ '-re', '%', sub { update_scp_progress(); exp_continue; } ], [ eof => sub { - if (!$spawn_ok) { show_warning("f","No password prompt on $host_name at port $scp_port") } - if ($bad_passwd) { show_warning("f", "Bad password on $host_name") } - if ($no_perm) { show_warning("f", "Permission denied transferring $_ to $host_name") } - if ($bad_dir) { show_warning("f", "Can't find $host_path on $host_name") } + if (!$spawn_ok) { show_warning("f", _("No password prompt on $host_name at port $scp_port")) } + if ($bad_passwd) { show_warning("f", _("Bad password on $host_name")) } + if ($no_perm) { show_warning("f", _("Permission denied transferring $_ to $host_name")) } + if ($bad_dir) { show_warning("f", _("Can't find $host_path on $host_name")) } } ], - [ timeout => sub { show_warning("f", "$host_name not responding") } ], + [ timeout => sub { show_warning("f", _("$host_name not responding")) } ], ); my $exit_stat = $exp->exitstatus; @@ -1084,7 +1084,7 @@ sub build_tape { $command = "mt -f $tape_device status"; spawn_progress($command, "Checking for tape"); if ($log_buff =~ /DR_OPEN/) { - show_warning("f", "No tape in $tape_device!"); + show_warning("f", _("No tape in $tape_device!")); return(1); } @@ -3437,6 +3437,8 @@ sub restore_catalog_entry { # if it's remote storage, display what we know of the connection # parameters and get the user's verification, then connect + restore_status(); + my ($cat_entry, @restore_files) = @_; my $username; my $userpass = $passwd_user; @@ -3528,21 +3530,21 @@ sub restore_catalog_entry { if (($media eq 'ftp') || ($media eq 'rsync')) { if ($userpass eq '') { - show_warning("f", _("Password required")); + show_warning("f", __("Password required")); return(0); } } if (($media eq 'ftp') || ($media eq 'rsync') || ($media eq 'ssh')) { if ($username eq '') { - show_warning("f", _("Username required")); + show_warning("f", __("Username required")); return(0); } elsif ($vol_host eq '') { - show_warning("f", _("Hostname required")); + show_warning("f", __("Hostname required")); return(0); } } if ($dev_path eq '') { - show_warning("f", _("Path or Module required")); + show_warning("f", __("Path or Module required")); return(0); } @@ -3567,20 +3569,23 @@ sub restore_catalog_entry { sub restore_hd_or_cd { my ($cat_entry, $tarfile_dir, @restore_files) = @_; my $indv_files = @restore_files; + my $command; my $wild_card = catalog_to_wildcard($cat_entry); if ($indv_files eq 0) { #- full catalog specified foreach (wildcard_to_tarfile($wild_card)) { - system("tar -C $restore_path -xzf $tarfile_dir/$_"); + $command = "tar -C $restore_path -xzf $tarfile_dir/$_"; + spawn_progress($command, "Untarring from \n$_ \nto $restore_path."); } } else { #- individual files - pull from appropriate catalog foreach (@restore_files) { my $tarfile = file_to_tarfile($_, $wild_card); $_ = substr($_, 1); - system("tar -C $restore_path -xzf $tarfile_dir/$tarfile $_"); + $command = "tar -C $restore_path -xzf $tarfile_dir/$tarfile $_"; + spawn_progress($command, "Untarring \n$_ from \n$tarfile \nto $restore_path."); } } return(0); @@ -3589,6 +3594,7 @@ sub restore_hd_or_cd { sub restore_tape { my ($cat_entry, $dev_path, @restore_files) = @_; my $indv_files = @restore_files; + my $command; my $wild_card = catalog_to_wildcard($cat_entry); $dev_path =~ s/\/st/\/nst/; @@ -3597,11 +3603,15 @@ sub restore_tape { #- full catalog specified foreach (wildcard_to_tarfile($wild_card)) { my $offset = find_tape_offset($cat_entry); - system("mt -f $dev_path rewind"); - system("mt -f $dev_path fsf $offset"); - system("tar -C cfg_dir/restores -xf $dev_path"); + $command = "mt -f $dev_path rewind"; + spawn_progress($command, "Rewinding tape on $dev_path."); + $command = "mt -f $dev_path fsf $offset"; + spawn_progress($command, "Moving forward $offset file records."); + $command = "tar -C cfg_dir/restores -xf $dev_path"; + spawn_progress($command, "Untarring from $dev_path to work directory."); if (-e "$cfg_dir/restores/$_") { - system("tar -C $restore_path -xzf $cfg_dir/restores/$_"); + $command = "tar -C $restore_path -xzf $cfg_dir/restores/$_"; + spawn_progress($command, "Untarring \n$_ \nto $restore_path."); } else { return(1); } @@ -3613,12 +3623,16 @@ sub restore_tape { $_ = substr($_, 1); if (!-e "$cfg_dir/restores/$tarfile") { my $offset = find_tape_offset($cat_entry); - system("mt -f $dev_path rewind"); - system("mt -f $dev_path fsf $offset"); - system("tar -C cfg_dir/restores -xf $dev_path"); + $command = "mt -f $dev_path rewind"; + spawn_progress($command, "Rewinding tape on $dev_path."); + $command = "mt -f $dev_path fsf $offset"; + spawn_progress($command, "Moving forward $offset file records."); + $command = "tar -C cfg_dir/restores -xf $dev_path"; + spawn_progress($command, "Untarring from $dev_path to work directory."); } if (-e "$cfg_dir/restores/$tarfile") { - system("tar -C $restore_path -xzf $cfg_dir/restores/$tarfile $_"); + $command = "tar -C $restore_path -xzf $cfg_dir/restores/$tarfile $_"; + spawn_progress($command, "Untarring \n$_ from \n$tarfile \nto $restore_path."); } else { return(1); } @@ -3632,6 +3646,7 @@ sub restore_ftp { my $ftp; my ($cat_entry, $hostname, $hostpath, $username, $userpass, @restore_files) = @_; my $indv_files = @restore_files; + my $command; $DEBUG and print "file list to retrieve: $cat_entry\n "; if ($DEBUG && $interactive) { $ftp = Net::FTP->new($hostname, Debug => 1) or return(1) } @@ -3646,7 +3661,8 @@ sub restore_ftp { #- full catalog specified foreach (wildard_to_tarfile($wild_card)) { $ftp->get($_, "$cfg_dir/restores/$_"); - system("tar -C $restore_path -xzf $cfg_dir/restores/$_"); + $command = "tar -C $restore_path -xzf $cfg_dir/restores/$_"; + spawn_progress($command, "Untarring \n$_ \nto $restore_path."); } } else { #- individual files - pull from appropriate catalog @@ -3656,7 +3672,8 @@ sub restore_ftp { if (!-e "$cfg_dir/restores/$tarfile") { $ftp->get($tarfile, "$cfg_dir/restores/$tarfile"); } - system("tar -C $restore_path -xzf $cfg_dir/restores/$tarfile $_"); + $command = "tar -C $restore_path -xzf $cfg_dir/restores/$tarfile $_"; + spawn_progress($command, "Untarring \n$_ from \n$tarfile \nto $restore_path."); } } $ftp->quit; @@ -3666,6 +3683,7 @@ sub restore_ftp { sub restore_rsync_ssh_webdav { my ($cat_entry, $hostname, $hostpath, $username, $userpass, $mode, @restore_files) = @_; my $indv_files = @restore_files; + my $command; my $wild_card = catalog_to_wildcard($cat_entry); @@ -3673,14 +3691,16 @@ sub restore_rsync_ssh_webdav { #- full catalog specified foreach (wildcard_to_tarfile($wild_card)) { if ($mode eq 'ssh') { - system("scp $username\@$hostname:$hostpath/$_ $cfg_dir/restores/"); + $command = "scp $username\@$hostname:$hostpath/$_ $cfg_dir/restores/"; } elsif ($mode eq 'rsync') { - system("rsync --password-file=$cfg_dir/rsync.user $username\@$hostname\:\:$hostpath/$_ $cfg_dir/restores/"); + $command = "rsync --password-file=$cfg_dir/rsync.user $username\@$hostname\:\:$hostpath/$_ $cfg_dir/restores/"; } else { - system("wget http://$hostname/$hostpath/$_ -P $cfg_dir/restores/"); + $command = "wget http://$hostname/$hostpath/$_ -P $cfg_dir/restores/"; } + spawn_progress($command, "Retrieving backup file \n$_ \nvia $mode."); if (-e "$cfg_dir/restores/$_") { - system("tar -C $restore_path -xzf $cfg_dir/restores/$_"); + $command = "tar -C $restore_path -xzf $cfg_dir/restores/$_"; + spawn_progress($command, "Untarring \n$_ \nto $restore_path."); } else { return(1); } @@ -3692,15 +3712,17 @@ sub restore_rsync_ssh_webdav { $_ = substr($_, 1); if (!-e "$cfg_dir/restores/$tarfile") { if ($mode eq 'ssh') { - system("scp $username\@$hostname:$hostpath/$tarfile $cfg_dir/restores/"); + $command = "scp $username\@$hostname:$hostpath/$tarfile $cfg_dir/restores/"; } elsif ($mode eq 'rsync') { - system("rsync --password-file=$cfg_dir/rsync.user $username\@$hostname\:\:$hostpath/$tarfile $cfg_dir/restores/"); + $command = "rsync --password-file=$cfg_dir/rsync.user $username\@$hostname\:\:$hostpath/$tarfile $cfg_dir/restores/"; } else { - system("wget http://$hostname/$hostpath/$tarfile -P $cfg_dir/restores/"); + $command = "wget http://$hostname/$hostpath/$tarfile -P $cfg_dir/restores/"; } + spawn_progress($command, "Retrieving backup file \n$tarfile \nvia $mode."); } if (-e "$cfg_dir/restores/$tarfile") { - system("tar -C $restore_path -xzf $cfg_dir/restores/$tarfile $_"); + $command = "tar -C $restore_path -xzf $cfg_dir/restores/$tarfile $_"; + spawn_progress($command, "Untarring \n$_ from \n$tarfile \nto $restore_path."); } else { return(1); } @@ -3744,6 +3766,8 @@ sub find_tape_offset { foreach (@catalog) { if (instr($_, $label)) { if (!instr($_, $cat_entry)) { + # tar seems to need 2 of these to get located + $offset++; $offset++; } else { return($offset); @@ -3854,6 +3878,36 @@ sub restore_find_media_box { $up_box->show_all(); } +sub restore_status { + ${$central_widget}->destroy(); + $pbar3 = new Gtk::ProgressBar; + $stext = new Gtk::Label(""); + gtkpack($advanced_box, + $table = gtkpack(new Gtk::VBox(0, 5), + new Gtk::HBox(0,5), + create_packtable({ col_spacings => 10, row_spacings => 5 }, + [""], + [""], + [""], + [""], + [_("Restore Progress")], + [""], + [""], + [$pbar3], + [""], + [""], + [$pbar3->{label} = new Gtk::Label(' ') ], + [""], + ), + $stext, + ), + ); + $custom_help = "options"; + $central_widget = \$table; + $up_box->show_all(); + Gtk->main_iteration while Gtk->events_pending; +} + ################################################ BUTTON_BOX ################################################ # sub generic_button_box { |