diff options
-rwxr-xr-x | perl-install/standalone/drakbackup | 119 |
1 files changed, 88 insertions, 31 deletions
diff --git a/perl-install/standalone/drakbackup b/perl-install/standalone/drakbackup index 97f598488..c1e770e86 100755 --- a/perl-install/standalone/drakbackup +++ b/perl-install/standalone/drakbackup @@ -29,6 +29,16 @@ # --build_cd_autoinst # --backup_now --backup_default_now # restore user: pbs with list selection +# +# CD: only create iso image +# +# WARNING: ne pas ecraser les fichiers /etc/passwd fstab +# after a other install +# +# REQUIRE: cron if daemon +# cvs if version control of /etc directory +# cdrecord & mkisofs +# use Gtk; use lib qw(/usr/lib/libDrakX ); @@ -39,9 +49,11 @@ use common; use strict; my $in = 'interactive'->vnew('', 'default'); +$::isEmbedded = ($::XID, $::CCPID) = "@ARGV" =~ /--embedded (\w+) (\w+)/; !$::isEmbedded && $in->isa('interactive_gtk') and $::isWizard=1; + if ("@ARGV" =~ /--help|-h/) { print q(Backup and monitoring application @@ -84,7 +96,6 @@ my $DEBUG = 0; my $restore_sys = 1; my $restore_user = 1; my $restore_other = 1; - my @user_backuped = (); my $sys_backuped = 0; my $other_backuped = 0; @@ -101,7 +112,7 @@ my $option_replace = 1; my $comp_mode = 0; my $backup_sys = 1; my $backup_user = 1; -my $backup_daemon = 0; +my $backup_daemon = 1; my $backup_sys_cvs = 1; my $what_no_browser = 1; my $remember_pass = 0; @@ -118,7 +129,7 @@ my $where_net= 0; my $where_hd = 1; my $where_cd =0; my $cd_time = 650; -my $when_space = 'year'; +my $when_space; my $cd_with_install_boot = 0; my $cd_devive = ''; my $host_name = ''; @@ -168,6 +179,7 @@ sub save_conf_file { "CDRW_DEVICE=$cd_devive\n", "HOST_NAME=$host_name\n" ); + $cd_with_install_boot and push @cfg_list, "CD_WITH_INSTALL_BOOT\n" ; $remember_pass and push @cfg_list, "LOGIN=$login_user\n" ; $remember_pass and push @cfg_list, "PASSWD=$passwd_user\n" ; @@ -187,6 +199,38 @@ sub save_conf_file { if ($comp_mode) { push @cfg_list, "OPTION_COMP=TAR.BZ2\n"; } else { push @cfg_list, "OPTION_COMP=TAR.GZ\n"; } output_p( $cfg_file, @cfg_list); + save_cron_files(); +} + + +sub read_cron_files { + if (-f '/etc/cron.hourly/drakbackup') { $when_space = 'hourly'; } + elsif (-f '/etc/cron.daily/drakbackup') { $when_space = 'daily'; } + elsif (-f '/etc/cron.weekly/drakbackup') { $when_space = 'weekly';} + elsif (-f '/etc/cron.monthly/drakbackup') { $when_space = 'monthly';} + else {$backup_daemon = 0; } +} + +sub save_cron_files { + my @cron_file = ("#!/bin/sh\n", "\n", "/seb/cvs/gi/perl-install/standalone --default" ); + + if ($backup_daemon) { + foreach ('hourly', 'daily', 'weekly', 'monthly'){ + -f "/etc/cron.$_/drakbackup" and rm_rf("/etc/cron.$_/drakbackup"); + } + if ( $when_space eq _("hourly")) { output_p('/etc/cron.hourly/drakbackup', @cron_file )} + elsif ( $when_space eq _("daily")) { output_p('/etc/cron.daily/drakbackup', @cron_file )} + elsif ( $when_space eq _("weekly")) { output_p('/etc/cron.weekly/drakbackup', @cron_file )} + elsif ( $when_space eq _("monthly")) { output_p('/etc/cron.monthly/drakbackup', @cron_file )} + } else { + foreach ('hourly', 'daily', 'weekly', 'monthly'){ + -f "/etc/cron.$_/drakbackup" and rm_rf("/etc/cron.$_/drakbackup"); + } + } +# -f '/etc/cron.daily/drakbackup' and rm_rf( "/etc/cron.daily/drakbackup"); +# -f '/etc/cron.weekly/drakbackup' and rm_rf( "/etc/cron.weekly/drakbackup"); +# -f '/etc/cron.monthly/drakbackup' and rm_rf( "/etc/cron.monthly/drakbackup"); + } sub read_conf_file { @@ -221,11 +265,12 @@ sub read_conf_file { if (/^USE_CD/) { $where_cd = 1; } if (/^USE_NET/) { $where_net = 1; } if (/^CD_TIME/) { s/^CD_TIME=//gi; $cd_time = $_; } - if (/^DAEMON_TIME_SPACE/) { s/^DAEMON_TIME_SPACE=//gi; $when_space = $_; } +# if (/^DAEMON_TIME_SPACE/) { s/^DAEMON_TIME_SPACE=//gi; $when_space = $_; } if (/^CD_WITH_INSTALL_BOOT/) { $cd_with_install_boot = 1; } if (/^CDRW_DEVICE/) { s/^CDRW_DEVICE=//gi; $cd_devive = $_;} if (/^HOST_NAME/) { s/^HOST_NAME=//gi; $host_name = $_;} } + read_cron_files(); $cfg_file_exist = 1; } else { $cfg_file_exist = 0; } @@ -718,9 +763,9 @@ sub advanced { ); my $combo_when_space = new Gtk::Combo(); - $combo_when_space->set_popdown_strings (_("daily"),_("week"),_("month"),_("year"),); + $combo_when_space->set_popdown_strings (_("hourly"),_("daily"),_("weekly"),_("monthly")); my $box_when = gtkpack_(new Gtk::VBox(0,1), - 0, gtkpack_(new Gtk::HBox(0,10), + 0, gtkpack_(new Gtk::HBox(0,10), 1, _(""), 1, new Gtk::Pixmap($pix_time_map, $pix_time_mask), 0, my $check_when_daemon = new Gtk::CheckButton( _(" Use daemon") ), @@ -743,10 +788,10 @@ sub advanced { ), 0, new Gtk::HSeparator, + 1, _("Please be careful that cron deamon is include on your services. "), ); $combo_when_space->entry->set_text( $when_space ); - $combo_when_space->entry->signal_connect( 'changed', sub { $when_space = $combo_when_space->entry->get_text()}); - + $combo_when_space->entry->signal_connect( 'changed', sub { $when_space = $combo_when_space->entry->get_text(); print $when_space."\n";}); my $box_options = gtkpack_(new Gtk::VBox(0,1), 0, new Gtk::HSeparator, 0, gtkpack_(new Gtk::VBox(0,10), @@ -758,7 +803,7 @@ sub advanced { ), 0, new Gtk::HSeparator, 0, gtkpack_(new Gtk::VBox(0,10), - 0, my $check_tar_bz2 = new Gtk::CheckButton( _(" Use Tar and bzip2 ( else use tar and gunzip.)") ), + 0, my $check_tar_bz2 = new Gtk::CheckButton( _(" Use Tar and bzip2 ( else use tar and gunzip, very slow)") ), 0, my $check_replace = new Gtk::CheckButton( _(" Replace (no update backup files)")), 0, my $check_backupignore = new Gtk::CheckButton( _(" Use .backupignore files")), ), @@ -849,6 +894,11 @@ sub find_backup_to_restore { $DEBUG and print $_."\n" foreach @user_backuped; } +sub do_cron { + + +} + sub do_restore_backend { $restore_user and system("cd / && tar xvfz $save_path/backup_user_$_.tar.gz ") foreach @user_list_to_restore; $restore_sys and system("cd / && tar xvfz $save_path/backup_sys.tar.gz "); @@ -860,29 +910,33 @@ sub do_restore { my $do_restore; gtkpack($retore_box2, $do_restore = gtkpack_(new Gtk::VBox(0,10), - 0, new Gtk::VBox(0,10), - 1, new Gtk::Button(_("RESTORE...... ")), - 0, gtkpack_(new Gtk::HBox(0,10), - 0, gtksignal_connect(new Gtk::Button(_(" Previous ")), clicked => sub { - ${$central_widget}->destroy(); - restore_step2(); - }), - 1, new Gtk::VBox(0,10), - 0, gtksignal_connect(new Gtk::Button(_(" Next ")), clicked => sub { - ${$central_widget}->destroy(); - }), - ), - ), + 1, new Gtk::VBox(0,10), + 1, gtkpack(new Gtk::HBox(0,10), + new Gtk::VBox(0,10), + gtksignal_connect(new Gtk::Button(_(" Restore ")), clicked => sub { + do_restore_backend(); }), + new Gtk::VBox(0,10), + ), + 1, new Gtk::VBox(0,10), + 0, gtkpack_(new Gtk::HBox(0,10), + 0, gtksignal_connect(new Gtk::Button(_(" Previous ")), clicked => sub { + ${$central_widget}->destroy(); + restore_step2(); + }), + 1, new Gtk::VBox(0,10), + 0, gtksignal_connect(new Gtk::Button(_(" Next ")), clicked => sub { + ${$central_widget}->destroy(); + }), + ), + ), ); - do_restore_backend(); $central_widget = \$do_restore; $up_box->show_all(); - } sub restore_step_other { my $retore_step_other; - print $_."\n" foreach (@user_list_to_restore); + $DEBUG and print "user list to restore" . $_."\n" foreach (@user_list_to_restore); gtkpack($retore_box2, $retore_step_other = gtkpack_(new Gtk::VBox(0,10), 1, new Gtk::VBox(0,10), @@ -920,7 +974,7 @@ sub restore_step_other { my %check_user_to_restore; sub restore_step_user { - + @user_list_to_restore = @user_backuped; my $retore_step_user; gtkpack($retore_box2, $retore_step_user = gtkpack_(new Gtk::VBox(0,10), @@ -928,9 +982,13 @@ sub restore_step_user { 0, _("User list to restore "), 1, createScrolledWindow( gtkpack(new Gtk::VBox(0,0), map { my $name = $_; - push @user_list_to_restore, $name; +# push @user_list_to_restore, $name; my $b = new Gtk::CheckButton($name); - gtkset_active($b, 1); + if ( grep /^$name$/, @user_list_to_restore) { + gtkset_active($b, 1); + } else { + gtkset_active($b, 0); + } $b->signal_connect(toggled => sub { if ($check_user_to_restore{$name}[1] ) { print "add : $name \n"; @@ -1000,7 +1058,6 @@ sub restore_step_sys { } sub restore_step2 { - my $un = 1; my $retore_step2; gtkpack($retore_box2, $retore_step2 = gtkpack_(new Gtk::VBox(0,10), @@ -1013,7 +1070,7 @@ sub restore_step2 { 1, new Gtk::VBox(0,10), 0, gtksignal_connect(new Gtk::Button(_(" Next ")), clicked => sub { ${$central_widget}->destroy(); - if ($restore_sys) { restore_step_sys(); } + if ($restore_sys && $backup_sys_cvs) { restore_step_sys(); } elsif ($restore_user) { restore_step_user();} elsif ($restore_other){ restore_step_other();} else{ do_restore();} @@ -1056,7 +1113,7 @@ sub restore { 1, new Gtk::HBox(0,10), 1, gtkpack_(new Gtk::VBox(0,10), 0, gtksignal_connect(new Gtk::Button(_("Restore all backups (last)")), - clicked => sub { $retore_box3->destroy(); }), + clicked => sub { $retore_box3->destroy(); do_restore(); }), 0, gtksignal_connect(new Gtk::Button(_("Custom Restore")), clicked => sub { $retore_box3->destroy(); restore_step2(); }), ), |