diff options
-rwxr-xr-x | perl-install/standalone/drakbackup | 149 |
1 files changed, 81 insertions, 68 deletions
diff --git a/perl-install/standalone/drakbackup b/perl-install/standalone/drakbackup index 79b4f9ca7..95127774c 100755 --- a/perl-install/standalone/drakbackup +++ b/perl-install/standalone/drakbackup @@ -1,6 +1,6 @@ #!/usr/bin/perl # -# Copyright (C) 2001 by Sebastien DUPONT <sdupont@mandrakesoft.com> +# Copyright (C) 2001 MandrakeSoft by Sebastien DUPONT <dupont_s@epita.fr> # Redistribution of this file is permitted under the terms of the GNU # Public License (GPL) # @@ -84,6 +84,7 @@ # # # TODO: +# 1 - do not remove all backup when user unselect bz2 or gzip ! # 1 - replace tar --after-date by find / -mtime -1 \! -type d -print > /tmp/liste.jour # during restore step catch the most recent date # and put in list all backup between the fisrt date @@ -179,6 +180,7 @@ my @sys_backuped = (); my $sys_backuped = 0; my $other_backuped = 0; my @user_list_to_restore= (); +my @sys_list_to_restore = (); my $retore_box2; my $cd_devive_entry; my $custom_help; @@ -286,12 +288,12 @@ sub the_time { $the_time .= localtime->mon() +1; $the_time .= localtime->mday(); $the_time .= "_"; - if (localtime->hour() <= 10 ) { $the_time .= "0"; } + if (localtime->hour() < 10 ) { $the_time .= "0"; } $the_time .= localtime->hour(); - if (localtime->min() <= 10 ) { $the_time .= "0"; } + if (localtime->min() < 10 ) { $the_time .= "0"; } $the_time .= localtime->min(); - - + if (localtime->sec() < 10 ) { $the_time .= "0"; } + $the_time .= localtime->sec(); } sub save_conf_file { @@ -458,35 +460,35 @@ sub build_backup_files { the_time(); -d $save_path or mkdir_p($save_path); if ($comp_mode) { $tar_cmd = "tar cv --use-compress-program /usr/bin/bzip2 "; $tar_ext = "tar.bz2" } - else { $tar_cmd = "tar cvzp "; $tar_ext = "tar.gz"} + else { $tar_cmd = "tar cvpz "; $tar_ext = "tar.gz"} $tar_cmd_sys = $tar_cmd; $tar_cmd_user = $tar_cmd; $tar_cmd_other = $tar_cmd; $no_critical_sys and $tar_cmd_sys .= "--exclude passwd --exclude fstab --exclude group"; $what_no_browser and $tar_cmd_user .= "--exclude NewCache --exclude Cache --exclude cache"; - @dir_content = all($save_path); - grep (/backup_base_sys/, @dir_content) and $base_sys_exist = 1; - grep (/backup_base_other/, @dir_content) and $base_other_exist = 1; - + -d $save_path and @dir_content = all($save_path); + grep (/^backup\_base\_sys/, @dir_content) and $base_sys_exist = 1; if ($where_hd) { $interactive and progress($pbar, 0.5, _("Backup system files...")); if ($backup_sys) { if ($backup_sys_versions) { - if (grep(/backup_incr_sys/, @dir_content)) { - my @more_recent = grep /backup_incr_sys/, sort @dir_content; + if (grep /^backup\_incr\_sys/, @dir_content) { + my @more_recent = grep /^backup\_incr\_sys/, sort @dir_content; $more_recent = pop @more_recent; - } - else { - my @more_recent = grep /backup_base_sys/, sort @dir_content; + system("$tar_cmd_sys -f $save_path/backup_incr_sys$the_time.$tar_ext `find @sys_files -newer $save_path/$more_recent`"); + } + elsif (grep /^backup\_base\_sys/, @dir_content) { + my @more_recent = grep /^backup\_base\_sys/, sort @dir_content; $more_recent = pop @more_recent; - } - if (!$base_sys_exist) { - system("$tar_cmd_sys -f $save_path/backup_base_sys$the_time.$tar_ext @sys_files"); } + system("$tar_cmd_sys -f $save_path/backup_incr_sys$the_time.$tar_ext `find @sys_files -newer $save_path/$more_recent`"); + } else { - system("$tar_cmd_sys -f $save_path/backup_incr_sys$the_time.$tar_ext `find @sys_files -newer $save_path/$more_recent`");} - } else { + system("$tar_cmd_sys -f $save_path/backup_base_sys$the_time.$tar_ext @sys_files"); + } + } + else { system("cd $save_path && rm -f backup_sys* backup_base_sys* backup_incr_sys*"); system("$tar_cmd_sys -f $save_path/backup_sys$the_time.$tar_ext @sys_files"); } @@ -508,23 +510,29 @@ sub build_backup_files { if ($backup_user) { foreach (@user_list) { my $user = $_; - if (grep (/backup_base_user_$user/, @dir_content)) { $base_user_exist = 1; } - else { $base_user_exist = 0; } +# if (grep (/^backup\_base\_user\_$user\_/, @dir_content)) { $base_user_exist = 1; } +# else { $base_user_exist = 0; } $path_name = return_path($user); if ($backup_user_versions) { - if (grep(/backup_incr_user/, @dir_content)) { - my @more_recent = grep /backup_incr_user_$user\_/, sort @dir_content; + if (grep(/^backup\_incr\_user\_$user\_/, @dir_content)) { + my @more_recent = grep /^backup\_incr\_user\_$user\_/, sort @dir_content; $more_recent = pop @more_recent; +# my @system("find $path_name -cnewer $save_path/$more_recent"); + system("$tar_cmd_user -f $save_path/backup_incr_user_$user$the_time.$tar_ext `find $path_name -cnewer $save_path/$more_recent`"); } - else { - my @more_recent = grep /backup_base_user_$user\_/, sort @dir_content; + elsif (grep /^backup\_base\_user\_$user\_/, @dir_content) { + my @more_recent = grep /^backup\_base\_user\_$user\_/, sort @dir_content; $more_recent = pop @more_recent; + print "backup_base_user and more_recent : $more_recent\n"; + print "$tar_cmd_user -f $save_path/backup_incr_user_$user$the_time.$tar_ext `find $path_name -newer $save_path/$more_recent`\n"; +system("$tar_cmd_user -f $save_path/backup_incr_user_$user$the_time.$tar_ext `find $path_name -cnewer $save_path/$more_recent`"); + } + else { + print "else\n"; + system("$tar_cmd_user -f $save_path/backup_base_user_$user$the_time.$tar_ext $path_name"); } - if (!$base_user_exist) { - system("$tar_cmd_user -f $save_path/backup_base_user_$user$the_time.$tar_ext $path_name");} - else { - system("$tar_cmd_user -f $save_path/backup_incr_user_$user$the_time.$tar_ext `find @sys_files -newer $save_path/$more_recent`");} } else { + print "else else\n"; system("cd $save_path && rm -f backup_user_$_* backup_base_user_$_* backup_incr_user_$_*"); system("$tar_cmd_user -f $save_path/backup_user_$_$the_time.$tar_ext $path_name"); } @@ -1222,7 +1230,7 @@ sub advanced_options{ ), 0, new Gtk::HSeparator, 0, gtkpack_(new Gtk::VBox(0,10), - 0, my $check_tar_bz2 = new Gtk::CheckButton( _(" Use Tar and bzip2 ( very slow) [please be careful if you\n (un)select this option all your old backups will be deleted ]") ), + 0, gtkset_sensitive(my $check_tar_bz2 = new Gtk::CheckButton( _(" Use Tar and bzip2 ( very slow) [please be careful if you\n (un)select this option all your old backups will be deleted ]") ), 0), 0, gtkset_sensitive(my $check_backupignore = new Gtk::CheckButton( _(" Use .backupignore files")), 0), ), ), @@ -1528,7 +1536,7 @@ sub select_most_recent_selected_of { my ($user_name) = @_; my @list_tmp2; my @tmp = sort @user_list_to_restore2; - foreach (grep /$user_name/, sort @tmp) { push @list_tmp2 , $_; } + foreach (grep /$user_name\_/, sort @tmp) { push @list_tmp2 , $_; } return pop @list_tmp2; } @@ -1549,7 +1557,7 @@ sub select_user_data_to_restore { foreach my $var_tmp (@user_list_backuped) { $var_eq = 1; my $more_recent = (split( ' ', select_most_recent_selected_of($var_tmp)))[0]; - foreach (grep /^backup_user_$var_tmp/, sort @list_backup) { + foreach (grep /^backup\_user\_$var_tmp\_/, sort @list_backup) { s/.tar.gz//gi; s/.tar.bz2//gi; if ($more_recent) { @@ -1563,7 +1571,7 @@ sub select_user_data_to_restore { } foreach my $var_to_restore (@list_tmp) { $var_to_restore =~ s/backup_//gi; - foreach my $var_exist (@list_tmp2) { + foreach my $var_exist ( sort @list_tmp2) { if ($var_exist =~ /$var_to_restore/ ) { push @user_list_to_restore, $var_exist; } @@ -1573,21 +1581,21 @@ sub select_user_data_to_restore { } sub select_sys_data_to_restore { -# my @list_tmp = (); -# my @list_tmp2 = (); -# my @list_backup = (); - -# -d $path_to_find_restore and my @list_backup_tmp2 = all($path_to_find_restore); -# @list_tmp2 = @list_backup_tmp2; -# foreach (@list_backup_tmp2) { -# s/\_base//gi; -# s/\_incr//gi; -# push @list_backup , $_; -# } - -# -d $path_to_find_restore and my @list_backup_tmp2 = all($path_to_find_restore); - -# $DEBUG and print "(incremental restore) real sys list to restore : $_ \n" foreach (@user_list_to_restore); + my $var_eq = 1; + my @list_tmp = (); + @sys_list_to_restore = (); + + -d $path_to_find_restore and my @list_tmp = all($path_to_find_restore); + my @more_recent = split( ' ', $restore_step_sys_date); + my $more_recent = pop @more_recent; + print "list_tmp content: $_\n" foreach (@list_tmp); + foreach my $var_exist (grep /\_sys\_/, sort @list_tmp) { + if ($var_exist =~ /$more_recent/ ) { + push @sys_list_to_restore, $var_exist; + $var_eq = 0; } + else { $var_eq and push @sys_list_to_restore, $var_exist; } + } + $DEBUG and print "sys list to restore: $_\n " foreach (@sys_list_to_restore); } @@ -1597,28 +1605,30 @@ sub restore_backend { else { $untar_cmd = 1; } if ($restore_user) { - select_user_data_to_restore(); - $untar_cmd or system(" echo 'user: $_' && tar xfz $path_to_find_restore/$_ -C $restore_path") foreach @user_list_to_restore; - $untar_cmd and system("echo 'user: $_' && /usr/bin/bzip2 -cd $path_to_find_restore/$_ | tar xf -C $restore_path ") foreach @user_list_to_restore; - } + if ($backup_user_versions) { + select_user_data_to_restore(); + $untar_cmd or system(" echo 'user: $_' && tar xfz $path_to_find_restore/$_ -C $restore_path") foreach @user_list_to_restore; + $untar_cmd and system("echo 'user: $_' && /usr/bin/bzip2 -cd $path_to_find_restore/$_ | tar xf -C $restore_path ") foreach @user_list_to_restore; + } + } if ($restore_sys) { - select_sys_data_to_restore(); -# $untar_cmd or system("echo backup_sys && cd /tmp && tar xfz $path_to_find_restore/backup_sys.tar.gz -C $restore_path "); -# $untar_cmd and system("echo backup_sys cd /tmp && /usr/bin/bzip2 -cd $path_to_find_restore/backup_sys.tar.bz2 | tar xf -C $restore_path "); -# print " restore sys\n"; + if ($backup_sys_versions) { + select_sys_data_to_restore(); + $untar_cmd or system("echo 'sys: $_' && cd /tmp && tar xfz $path_to_find_restore/$_ -C $restore_path ") foreach @sys_list_to_restore; + $untar_cmd and system("echo 'sys: $_' cd /tmp && /usr/bin/bzip2 -cd $path_to_find_restore/$_ | tar xf -C $restore_path ") foreach @sys_list_to_restore; + } else { + $untar_cmd or system("echo restore_sys && cd /tmp && tar xfz $path_to_find_restore/backup_sys.tar.gz -C $restore_path "); + $untar_cmd and system("echo restore_sys cd /tmp && /usr/bin/bzip2 -cd $path_to_find_restore/backup_sys.tar.bz2 | tar xf -C $restore_path "); + } } - -## fixme if ($restore_other) { -# $untar_cmd or system("echo backup_other && cd /tmp && tar xfz $path_to_find_restore/backup_other.tar.gz -C $restore_path "); -# $untar_cmd and system("echo backup_other && cd /tmp && /usr/bin/bzip2 -cd $path_to_find_restore/backup_other.tar.bz2 | tar xf -C $restore_path "); -# print "restore other \n"; + $untar_cmd or system("echo backup_other && cd /tmp && tar xfz $path_to_find_restore/backup_other.tar.gz -C $restore_path "); + $untar_cmd and system("echo backup_other && cd /tmp && /usr/bin/bzip2 -cd $path_to_find_restore/backup_other.tar.bz2 | tar xf -C $restore_path "); } print "End of restore\n"; } sub restore_do { - if ($backup_bef_restore) { if ($restore_sys) { $backup_sys = 1;} else { $backup_sys = 0;} @@ -1641,7 +1651,7 @@ sub restore_do2 { restore_state(); gtktext_insert($text, $restore_state); button_box_restore_main(); - + gtkpack($advanced_box, $do_restore = gtkpack_(new Gtk::VBox(0,10), 0, _(" Restore Configuration "), @@ -1754,7 +1764,6 @@ sub restore_step_sys { ); $combo_restore_step_sys->entry->signal_connect( 'changed', sub { $restore_step_sys_date = $combo_restore_step_sys->entry->get_text(); - print $restore_step_sys_date. "\n"; }); $combo_restore_step_sys->entry->set_text($restore_step_sys_date); if ($restore_user) { $next_widget = \&restore_step_user;} @@ -1914,6 +1923,10 @@ sub restore_other_media { sub restore_step2 { my $retore_step2; + my $other_exist; + + if (-f "$save_path/backup_other*") { $other_exist = 1; } + else { my $other_exist = 0; $restore_other = 0; } gtkpack($advanced_box, $retore_step2 = gtkpack_(new Gtk::VBox(0,10), @@ -1930,7 +1943,7 @@ sub restore_step2 { ), 0, my $check_restore_sys = new Gtk::CheckButton(_("Restore system")), 0, my $check_restore_user = new Gtk::CheckButton(_("Restore Users")), - 0, my $check_restore_other = new Gtk::CheckButton(_("Restore Other")), + 0, gtkset_sensitive( my $check_restore_other = new Gtk::CheckButton(_("Restore Other")), $other_exist), 0, gtkpack_(new Gtk::HBox(0,10), 0, my $check_restore_other_path = new Gtk::CheckButton(_("select path to restore (instead of / ) ")), 1, new Gtk::HBox(0,10), @@ -2859,7 +2872,7 @@ Otherwise, you are able to select only one of this ")); } elsif ($custom_help eq "main") { gtktext_insert($text, -_(" Copyright (C) 2001 by MandrakeSoft (sdupont\@mandrakesoft.com) +_(" Copyright (C) 2001 MandrakeSoft by DUPONT Sebastien <dupont_s\@epita.fr> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -2917,7 +2930,7 @@ before to send it. ")); } else { gtktext_insert($text, -_(" Copyright (C) 2001 by MandrakeSoft (sdupont\@mandrakesoft.com) +_(" Copyright (C) 2001 MandrakeSoft by DUPONT Sebastien <dupont_s\@epita.fr> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by |