diff options
-rwxr-xr-x | perl-install/standalone/drakbackup | 275 |
1 files changed, 198 insertions, 77 deletions
diff --git a/perl-install/standalone/drakbackup b/perl-install/standalone/drakbackup index 4d2c1a9ee..bc5cf6e9b 100755 --- a/perl-install/standalone/drakbackup +++ b/perl-install/standalone/drakbackup @@ -32,24 +32,27 @@ # # # TODO: -# replace alors incremental selectionne. -# l.380 incremental: date -> si deja existe faire find -m ... | tar ... -# non incremental: date + supprime old avant le backup -# placer README dans $save_path -> prevenir des danger de supprimer la premier version -# ftp choose port to use ftp connexions -# ssh & rsync -# calcul disk space. -# backend : --resore_all, --restore_sys, --restore_users +# - replace alors incremental selectionne. +# - l.380 incremental: date -> si deja existe faire find -m ... | tar ... +# - non incremental: date + supprime old avant le backup +# - ftp choose port to use ftp connexions +# - send mail with results. +# - use quota. +# - placer README dans $save_path -> prevenir des danger de supprimer la premier version +# - ssh & rsync +# - calcul disk space. +# - backend : --resore_all, --restore_sys, --restore_users # --build_cd_autoinst # --backup_now --backup_default_now -# boot floppy disk -# webdav -# rsync -# cd writer detection -> cdrw: /sys/dev/cdrom/info /scsi/host0/bus0/target4/lun0 -# write on cd -# custom deamon -# build autoboot with backup and install cd -# use .backupignore like on CVS +# - boot floppy disk +# - webdav +# - rsync +# - cd writer detection -> cdrw: /sys/dev/cdrom/info /scsi/host0/bus0/target4/lun0 +# - write on cd +# - total backup.( all partitions wanted, windows partitions for example!) +# - custom deamon +# - build autoboot with backup and install cd +# - use .backupignore like on CVS # # DONE TODAY: #________________________________________________________________ @@ -76,7 +79,6 @@ if ("@ARGV" =~ /--help|-h/) { --build_cd : build restore iso with the currents backups files & rescue options. --build_floppy : build restore floppy. ---replace : delete backup files before build new do not update. --save_dir : by default the backup files are saved in in /var/backup directory so write other directory to change to change it. @@ -143,7 +145,6 @@ my @list_other = () ; my $cfg_file = "/etc/drakxtools/drakbackup/drakbackup.conf"; my $save_path = "/var/drakbackup"; my $restore_path = "/tmp"; -my $option_replace = 1; my $comp_mode = 0; my $backup_sys = 1; my $backup_user = 1; @@ -177,13 +178,13 @@ my $remember_pass = 0; my $passwd_user= ''; my $save_device_tape = (); my $cdrw_erase = 0; +my $no_critical_sys = 1; foreach (@ARGV) { /--default/ and $default = 1, $mode=-1; /--build_cd/ and $build_cd = 1, $mode=-1; /--build_floppy/ and $build_floppy = 1, $mode=-1; - /--replace|-r/ and $option_replace = 1, $mode=-1; /--conf_file/ and $mode = 0, next; /--list/ and $mode = 1, next; /--debug/ and $DEBUG = 1, next; @@ -238,6 +239,8 @@ sub save_conf_file { "TAPE_DEVICE=$save_device_tape\n", "HOST_NAME=$host_name\n" ); + $no_critical_sys and push @cfg_list, "NO_CRITICAL_SYS\n" ; + $no_critical_sys or push @cfg_list, "CRITICAL_SYS\n" ; $backup_sys_versions and push @cfg_list, "SYS_INCREMENTAL_BACKUPS\n" ; $backup_user_versions and push @cfg_list, "USER_INCREMENTAL_BACKUPS\n" ; $backup_other_versions and push @cfg_list, "OTHER_INCREMENTAL_BACKUPS\n" ; @@ -260,7 +263,6 @@ sub save_conf_file { $where_net and push @cfg_list, "USE_NET\n" ; $cdrw and push @cfg_list, "CDRW\n"; $what_no_browser or push @cfg_list, "BROWSER_CACHE\n" ; - $option_replace and push @cfg_list, "OPTION_REPLACE\n" ; $backup_sys or push @cfg_list, "NO_SYS_FILES\n"; if ($comp_mode) {push @cfg_list, "OPTION_COMP=TAR.BZ2\n"} else { push @cfg_list, "OPTION_COMP=TAR.GZ\n" } @@ -306,7 +308,6 @@ sub read_conf_file { if (/^HOME_FILES/) { s/^HOME_FILES=//gi; @user_list = split(' ', $_ ); } if (/^OTHER_FILES/) { s/^OTHER_FILES=//gi; @list_other = split(' ', $_ ); } if (/^PATH_TO_SAVE/) { s/^PATH_TO_SAVE=//gi; $save_path = $_; } - if (/^OPTION_REPLACE/) { $option_replace = 1; } if (/^NO_SYS_FILES/) { $backup_sys = 0;} if (/^NO_USER_FILES/) { $backup_user = 0;} if (/^OPTION_COMP/) { s/^OPTION_COMP=//gi; /TAR.GZ/ and $comp_mode = 0; /TAR.BZ2/ and $comp_mode = 1; } @@ -338,6 +339,8 @@ sub read_conf_file { if (/^SYS_INCREMENTAL_BACKUPS/) { $backup_sys_versions = 1;} if (/^USER_INCREMENTAL_BACKUPS/) { $backup_user_versions = 1;} if (/^OTHER_INCREMENTAL_BACKUPS/) { $backup_other_versions = 1;} + if (/^NO_CRITICAL_SYS/) { $no_critical_sys = 1;} + if (/^CRITICAL_SYS/) { $no_critical_sys = 0;} } read_cron_files(); $cfg_file_exist = 1; @@ -377,14 +380,17 @@ 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 cvz "; $tar_ext = "tar.gz"} + if ($comp_mode) { $tar_cmd = "tar cvp --use-compress-program /usr/bin/bzip2 "; $tar_ext = "tar.bz2" } + else { $tar_cmd = "tar cvzp "; $tar_ext = "tar.gz"} if ($where_hd) { print "backup_sys @sys_files\n"; $interactive and progress($pbar, 0.5, _("Backup system files...")); print "$save_path/backup_sys_\n"; $backup_sys_versions or system("rm -f $save_path/backup_sys*"); - $backup_sys and system("$tar_cmd -f $save_path/backup_sys$the_time.$tar_ext @sys_files"); + if ($backup_sys) { + $no_critical_sys or system("$tar_cmd -f $save_path/backup_sys$the_time.$tar_ext @sys_files"); + $no_critical_sys and system("$tar_cmd --exclude passwd --exclude fstab --exclude group -f $save_path/backup_sys$the_time.$tar_ext @sys_files"); + } $interactive and progress($pbar, 0.5, _("Backup system files...")); $interactive and progress($pbar3, 0.3, _("Hard Disk Backup files...")); print "backup_other @list_other\n"; @@ -480,19 +486,19 @@ sub advanced_what_sys { 1, _("This options can backup and restore all files on your /etc directory.\n"), 0, my $check_what_sys = new Gtk::CheckButton( _("Backup your System files. (~ 2Mo)")), 0, my $check_what_versions = new Gtk::CheckButton( _("Use incremental backup (do not replace old backups)") ), + 0, my $check_what_critical = new Gtk::CheckButton( _("Do not include critical files (passwd, goup, fstab)") ), 0, _("With this option you will be able to restore any version\n of your /etc directory."), 1, new Gtk::VBox(0, 15), ), ); - foreach ([$check_what_sys, \$backup_sys]) { + foreach ([$check_what_sys, \$backup_sys], [$check_what_critical, \$no_critical_sys]) { my $ref = $_->[1]; gtksignal_connect(gtkset_active($_->[0], ${$ref}), toggled => sub { ${$ref} = ${$ref} ? 0 : 1; }) } gtksignal_connect(gtkset_active($check_what_versions, $backup_sys_versions), toggled => sub { $backup_sys_versions = $backup_sys_versions ? 0 : 1; - $backup_sys_versions and $option_replace = 0; }); - $custom_help = ""; + $custom_help = "what"; $current_widget = \&advanced_what_sys; $previous_widget =\&advanced_what; $central_widget = \$box_what_sys; @@ -543,9 +549,8 @@ sub advanced_what_user { } gtksignal_connect(gtkset_active($check_what_user_versions, $backup_user_versions), toggled => sub { $backup_user_versions = $backup_user_versions ? 0 : 1; - $backup_user_versions and $option_replace = 0; }); - $custom_help = ""; + $custom_help = "what"; if ($previous_function) { $previous_widget =\&$previous_function; $next_widget =\&$previous_function; } else { $previous_widget =\&advanced_what; } $current_widget = \&advanced_what_user; @@ -568,16 +573,14 @@ sub advanced_what_other { gtksignal_connect(new Gtk::Button(_("Add")), clicked => sub {filedialog() }), gtksignal_connect(new Gtk::Button(_("Remove Selected")), clicked => \&list_remove, $list_other), ), - 0, new Gtk::HSeparator, 0, my $check_what_other_versions = new Gtk::CheckButton( _("Use Incremental Backups (do not replace old backups)") ), ), ); gtksignal_connect(gtkset_active($check_what_other_versions, $backup_other_versions), toggled => sub { $backup_other_versions = $backup_other_versions ? 0 : 1; - $backup_other_versions and $option_replace = 0; }); - $custom_help = ""; + $custom_help = "what"; $current_widget = \&advanced_what_other; $previous_widget =\&advanced_what; $central_widget = \$box_what_other; @@ -602,6 +605,8 @@ sub advanced_what{ clicked => sub { ${$central_widget}->destroy(); advanced_what_user();}), 1, gtksignal_connect(my $button_what_other = new Gtk::Button(), clicked => sub { ${$central_widget}->destroy(); advanced_what_other(); }), + 1, gtksignal_connect(my $button_what_all = new Gtk::Button(), + clicked => sub { ${$central_widget}->destroy(); message_underdevel(); }), 1, new Gtk::VBox(0, 5), ), 1, new Gtk::VBox(0, 5), @@ -622,6 +627,11 @@ sub advanced_what{ new Gtk::Label(_(" Other ")), new Gtk::HBox(0, 5) )); + $button_what_all->add(gtkpack(new Gtk::HBox(0,10), + new Gtk::Pixmap($pix_other_map, $pix_other_mask), + new Gtk::Label(_(" All ")), + new Gtk::HBox(0, 5) + )); $custom_help = ""; $current_widget = \&advanced_what; $previous_widget =\&advanced_box; @@ -1046,23 +1056,14 @@ 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)") ), - 0, my $check_replace = new Gtk::CheckButton( _(" Replace (cancel all incrementals backups.)")), 0, gtkset_sensitive(my $check_backupignore = new Gtk::CheckButton( _(" Use .backupignore files")), 0), ), ), ); - foreach ([$check_tar_bz2, \$comp_mode], [$check_replace, \$option_replace], [$check_backupignore, \$backupignore]) { + foreach ([$check_tar_bz2, \$comp_mode], [$check_backupignore, \$backupignore]) { my $ref = $_->[1]; gtksignal_connect(gtkset_active($_->[0], ${$ref}), toggled => sub { ${$ref} = ${$ref} ? 0 : 1; }) } - gtksignal_connect(gtkset_active($check_replace, $option_replace ), toggled => sub { - $option_replace = $option_replace ? 0 : 1; - if ($option_replace) { - $backup_sys_versions = 0; - $backup_user_versions = 0; - $backup_other_versions = 0; - } - }); $custom_help = "options"; $current_widget = \&advanced_options; $previous_widget =\&advanced_box; @@ -1318,8 +1319,6 @@ sub system_state { $system_state .= _("\n- Path to save backups: $save_path\n"); $system_state .= _("\n- Options:\n"); $backup_sys or $system_state .= _("\tDo not include System Files\n"); - if ($option_replace) { $system_state .= _("\tReplace backups (do not update)\n"); } - else { $system_state .= _("\tUpdate backups (do not replace)\n"); } if ($comp_mode) { $system_state .= _("\tBackups use tar and bzip2\n "); } else { $system_state .= _("\tBackups use tar and gzip\n"); } } @@ -1739,7 +1738,7 @@ sub button_box_main { gtksignal_connect(new Gtk::Button(_("close")), clicked => sub { Gtk->main_quit() }), gtksignal_connect(new Gtk::Button(_(" Help ")), clicked => sub { - ${$central_widget}->destroy(); adv_help(\&interactive_mode_box) }), + ${$central_widget}->destroy(); adv_help(\&interactive_mode_box,$custom_help) }), ), ); } @@ -1756,7 +1755,7 @@ sub message_norestorefile_box { 1, gtkpack(new Gtk::HBox(0, 15), new Gtk::VBox(0, 5), new Gtk::Pixmap($pix_warn_map, $pix_warn_mask), - _("Please Build backup before to restore it..."), + _("Please Build backup before to restore it...\n or verify that your path to save is correct."), new Gtk::VBox(0, 5), ), 1, new Gtk::VBox(0, 5), @@ -1853,6 +1852,29 @@ sub message_noconf_box { $up_box->show_all(); } +sub message_underdevel { + $box2->destroy(); + my ($pix_warn_map, $pix_warn_mask) = gtkcreate_png('warning'); + + gtkadd($advanced_box, + $box2 = gtkpack_(new Gtk::HBox(0, 15), + 1, new Gtk::VBox(0, 5), + 1, gtkpack(new Gtk::HBox(0, 15), + new Gtk::VBox(0, 5), + new Gtk::Pixmap($pix_warn_map, $pix_warn_mask), + _(" Under Devel ... please wait."), + new Gtk::VBox(0, 5), + ), + 1, new Gtk::VBox(0, 5), + ), + ); + button_box_restore_main(); + $central_widget = \$box2; + $up_box->show_all(); +} + + + ################################################ BUILD_BACKUP ################################################ sub progress { @@ -2176,6 +2198,7 @@ sub interactive_mode_box { ), ); button_box_main(); + $custom_help = "main"; $central_widget = \$box2; $up_box->show_all(); } @@ -2220,6 +2243,7 @@ sub interactive_mode { ), ); interactive_mode_box(); + $custom_help = "main"; button_box_main(); $central_widget = \$box2; $window1->show_all; @@ -2238,21 +2262,6 @@ sub about { $about_box = gtkpack_(new Gtk::VBox(0,10), 1, gtkpack_(new Gtk::HBox(0,0), 1, gtktext_insert(gtkset_editable($text, 1), _(" - Copyright (C) 2001 by MandrakeSoft (sdupont\@mandrakesoft.com) - - 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 - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ")), 0, new Gtk::VScrollbar($text->vadj), @@ -2273,7 +2282,8 @@ sub adv_help { my $advanced_box_help; if ($custom_help eq "toto") { gtktext_insert($text, _("toto")); } - elsif ($custom_help eq "options") { gtktext_insert($text, _("options description: + elsif ($custom_help eq "options") { gtktext_insert($text, +_("options description: In this step Drakbacup allow you to change: @@ -2302,7 +2312,93 @@ sub adv_help { ")); } - elsif ($custom_help eq "ftp") { gtktext_insert($text, _("options description: + elsif ($custom_help eq "what") { gtktext_insert($text, +_("options description: + + - Backup system files: + + This options allow you to backup your /etc directory, + which contain all configuration files please be + carreful during restore step to not overwriting + /etc/passwd + /etc/group + /etc/fstab + + - Backup User files: + + This option allow to select all users that you want + to backup. + To preserve disk space, it recommeded to not include + browsers cache. + + - Backup User files: + + This option allow to add more data to save. + + - Incremental Backups: + + The incremental backup is the most powerfull + option to use backup, this option allow you + to backup all your data the first time, and + only the changed data after. + So you will be able during the restore + step, to restore your data from a specified + date. + If you have not selected this options all + old backups are deleted before each backup. + + +")); } + elsif ($custom_help eq "main") { gtktext_insert($text, +_(" Copyright (C) 2001 by MandrakeSoft (sdupont\@mandrakesoft.com) + + 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 + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + _____________________ + +description: + + Drakbacup is use to backup your system. + During the configuration you can select + - System files, + - Users files, + - Other files. + or All your system ... and Other (like windows Partitions) + + Drakbacup allow you to backup your system on: + - Harddrive. + - NFS. + - CDROM (CDRW), DVDROM (with autoboot, rescue and autoinstall.). + - FTP. + - Rsync. + - Webdav. + - Tape. + + Drakbacup allow you to Restore your system on + choosen directory. + + Per default all backup will be stored on your + /var/drakbackup directory + + configuration file: + /etc/drakconf/drakbackup/drakbakup.conf + + +")); } + elsif ($custom_help eq "ftp") { gtktext_insert($text, +_("options description: Please be careful when you are using ftp backup, because only backup already build are send on server. @@ -2311,28 +2407,53 @@ before to send it. ")); } - else { gtktext_insert($text, _("description: + else { gtktext_insert($text, +_(" Copyright (C) 2001 by MandrakeSoft (sdupont\@mandrakesoft.com) - Drakbacup is use to backup system files and user files - Drakbacup allow to restore the system (etc, var files) - from starup or on drakconf utility. + 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 + the Free Software Foundation; either version 2, or (at your option) + any later version. -backup name format: all the time from the / dir. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - system backup: - backup_sys.tar.gz - user backup - backup_user_james.tar.gz - backup_user_seb.tar.gz - other directories - backup_other.tar.gz + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + _____________________ + +description: -build iso fs with rescue. + Drakbacup is use to backup your system. + During the configuration you can select + - System files, + - Users files, + - Other files. + or All your system ... and Other (like windows Partitions) -configuration file: + Drakbacup allow you to backup your system on: + - Harddrive. + - NFS. + - CDROM (CDRW), DVDROM (with autoboot, rescue and autoinstall.). + - FTP. + - Rsync. + - Webdav. + - Tape. + Drakbacup allow you to Restore your system on + choosen directory. + + Per default all backup will be stored on your + /var/drakbackup directory + + configuration file: /etc/drakconf/drakbackup/drakbakup.conf + "));} gtkpack($advanced_box, |