summaryrefslogtreecommitdiffstats
path: root/perl-install/standalone/drakbackup
diff options
context:
space:
mode:
authorStew Benedict <stewb@mandriva.org>2003-08-07 19:28:01 +0000
committerStew Benedict <stewb@mandriva.org>2003-08-07 19:28:01 +0000
commit6321079a60ed81daaa57f5d22f535c8e32314583 (patch)
tree75821247366f5d9c4d26a49710ba3e32f97fd27b /perl-install/standalone/drakbackup
parentc08e20c722f3e277d90da0b76d5fca462b15e5f9 (diff)
downloaddrakx-6321079a60ed81daaa57f5d22f535c8e32314583.tar
drakx-6321079a60ed81daaa57f5d22f535c8e32314583.tar.gz
drakx-6321079a60ed81daaa57f5d22f535c8e32314583.tar.bz2
drakx-6321079a60ed81daaa57f5d22f535c8e32314583.tar.xz
drakx-6321079a60ed81daaa57f5d22f535c8e32314583.zip
Fix removed users code (thanks gc). Enable .backupignore.
Clean up spastic progress bar. Add more info in "View Config"
Diffstat (limited to 'perl-install/standalone/drakbackup')
-rwxr-xr-xperl-install/standalone/drakbackup93
1 files changed, 60 insertions, 33 deletions
diff --git a/perl-install/standalone/drakbackup b/perl-install/standalone/drakbackup
index ff2258946..ceb2ba752 100755
--- a/perl-install/standalone/drakbackup
+++ b/perl-install/standalone/drakbackup
@@ -648,9 +648,9 @@ sub save_conf_file() {
$what_no_browser or push @cfg_list, "BROWSER_CACHE\n";
$backup_sys or push @cfg_list, "NO_SYS_FILES\n";
if ($comp_mode) {
- push @cfg_list, "OPTION_COMP=TAR.BZ2\n";
+ push @cfg_list, "OPTION_COMP=TAR.BZ2\n";
} else {
- push @cfg_list, "OPTION_COMP=TAR.GZ\n";
+ push @cfg_list, "OPTION_COMP=TAR.GZ\n";
}
$del_hd_files and push @cfg_list, "DEL_HD_FILES\n";
output_p($cfg_file, @cfg_list);
@@ -766,11 +766,8 @@ sub read_conf_file() {
}
sub check_valid_users() {
- my @new_user_list;
all_user_list();
- foreach my $user (@user_list) {
- push @new_user_list, $user if any { /$user/ } @user_list_all;
- }
+ my @new_user_list = intersection(\@user_list, \@user_list_all);
if (@user_list != @new_user_list) {
log::l(N("Valid user list changed, rewriting config file."));
if ($DEBUG) {
@@ -1079,10 +1076,9 @@ sub spawn_progress {
my ($command, $descr) = @_;
my $value;
my $timer;
-print "$descr\n";
$interactive and progress($pbar3, $plabel3, 0, translate($descr));
- $interactive and $pbar3->set_fraction(0);
- $interactive and $timer = Glib::Timeout->add(2, \&progress_timeout);
+ $interactive and $pbar3->set_pulse_step(0.1);
+ $interactive and $timer = Glib::Timeout->add(20, \&progress_timeout);
$log_buff .= "\n" . $descr . ":\n";
$log_buff .= $command . "\n\n";
@@ -1101,10 +1097,7 @@ print "$descr\n";
}
sub progress_timeout() {
- my $new_val;
- $new_val = $pbar3->get_fraction + 0.1;
- if ($new_val > 1) { $new_val = 0 }
- $pbar3->set_fraction($new_val);
+ $pbar3->pulse;
return 1;
}
@@ -1257,6 +1250,7 @@ sub build_backup_files() {
my $base_sys_exist = 0;
my @dir_content;
my $incr;
+ my $find_args = "! -type d";
local $_;
$results = "";
@@ -1295,13 +1289,23 @@ sub build_backup_files() {
$no_critical_sys and $tar_cmd_sys .= "--exclude passwd --exclude fstab --exclude group --exclude mtab";
$what_no_browser and $tar_cmd_user .= "--exclude NewCache --exclude Cache --exclude cache";
$nonroot_user and $tar_cmd_user .= " --exclude .drakbackup";
-
+ $backupignore && -f "/etc/.backupignore" and $tar_cmd_sys .= " -X /etc/.backupignore";
+
-d $save_path and @dir_content = all($save_path);
any { /^backup_base_sys/ } @dir_content and $base_sys_exist = 1;
if ($where_hd && !$daemon || $daemon) {
$interactive and progress($pbar, $plabel, 0.5, N("Backup system files..."));
- if ($backup_sys) {
+ if ($backup_sys) {
+ my $find_args_sys = $find_args;
+ if ($backupignore) {
+ my @ignore_files = cat_("/etc/.backupignore");
+ foreach (@ignore_files) {
+ chop;
+ $find_args_sys .= " ! -name '" . $_ . "'";
+ }
+ }
+ $find_args_sys .= " -print";
if ($backup_sys_versions) {
$incr = "incr_sys";
$incr =~ s/incr/diff/ if $sys_diff_mode;
@@ -1311,7 +1315,7 @@ sub build_backup_files() {
my @more_recent = grep { /^list_incr_sys/ } sort @dir_content;
$more_recent = pop @more_recent;
$DEBUG and print "more recent file: $more_recent\n";
- system("find @sys_files -cnewer $save_path/$more_recent ! -type d -print > $save_path/list_incr_sys$the_time.txt");
+ system("find @sys_files -cnewer $save_path/$more_recent $find_args_sys > $save_path/list_incr_sys$the_time.txt");
if (!cat_("$save_path/list_incr_sys$the_time.txt")) {
system("rm $save_path/list_incr_sys$the_time.txt");
} else {
@@ -1325,7 +1329,7 @@ sub build_backup_files() {
my @more_recent = grep { /^list_base_sys/ } sort @dir_content;
$more_recent = pop @more_recent;
$DEBUG and print "more recent file: $more_recent\n";
- system("find @sys_files -cnewer $save_path/$more_recent ! -type d -print > $save_path/list_$incr$the_time.txt");
+ system("find @sys_files -cnewer $save_path/$more_recent $find_args_sys > $save_path/list_$incr$the_time.txt");
if (!cat_("$save_path/list_$incr$the_time.txt")) {
system("rm $save_path/list_$incr$the_time.txt");
} else {
@@ -1337,7 +1341,7 @@ sub build_backup_files() {
}
} else {
#- need this for the first pass too, if we're offloading the backups to other media (sb)
- system("find @sys_files ! -type d -print > $save_path/list_base_sys$the_time.txt");
+ system("find @sys_files $find_args_sys > $save_path/list_base_sys$the_time.txt");
system("$tar_cmd_sys -f $save_path/backup_base_sys$the_time.$tar_ext @sys_files");
push @file_list_to_send_by_ftp, "$save_path/backup_base_sys$the_time.$tar_ext";
push @file_list_to_send_by_ftp, "$save_path/list_base_sys$the_time.txt";
@@ -1356,7 +1360,18 @@ sub build_backup_files() {
if ($backup_user) {
foreach (@user_list) {
my $user = $_;
+ my $tar_cmd_cuser = $tar_cmd_user;
$path_name = return_path($user);
+ $backupignore && -f "$path_name/.backupignore" and $tar_cmd_cuser .= " -X $path_name/.backupignore";
+ my $find_args_user = $find_args;
+ if ($backupignore) {
+ my @ignore_files = cat_("$path_name/.backupignore");
+ foreach (@ignore_files) {
+ chop;
+ $find_args_user .= " ! -name '" . $_ . "'";
+ }
+ }
+ $find_args_user .= " -print";
if ($backup_user_versions) {
$incr = "incr_user_";
$incr =~ s/incr/diff/ if $user_diff_mode;
@@ -1366,11 +1381,11 @@ sub build_backup_files() {
my @more_recent = grep { /^list_incr_user_$user/ } sort @dir_content;
$more_recent = pop @more_recent;
$DEBUG and print "more recent file: $more_recent\n";
- system("find $path_name -cnewer $save_path/$more_recent ! -type d -print > $save_path/list_incr_user_$user$the_time.txt");
+ system("find $path_name -cnewer $save_path/$more_recent $find_args_user > $save_path/list_incr_user_$user$the_time.txt");
if (!cat_("$save_path/list_incr_user_$user$the_time.txt")) {
system("rm $save_path/list_incr_user_$user$the_time.txt");
} else {
- system("$tar_cmd_user -f $save_path/backup_incr_user_$user$the_time.$tar_ext -T $save_path/list_incr_user_$user$the_time.txt");
+ system("$tar_cmd_cuser -f $save_path/backup_incr_user_$user$the_time.$tar_ext -T $save_path/list_incr_user_$user$the_time.txt");
push @file_list_to_send_by_ftp, "$save_path/backup_incr_user_$user$the_time.$tar_ext";
push @file_list_to_send_by_ftp, "$save_path/list_incr_user_$user$the_time.txt";
$results .= " \nfile: $save_path/backup_incr_user_$user$the_time.$tar_ext\n";
@@ -1380,11 +1395,11 @@ sub build_backup_files() {
my @more_recent = grep { /^list_base_user_$user/ } sort @dir_content;
$more_recent = pop @more_recent;
$DEBUG and print "more recent file: $more_recent\n";
- system("find $path_name -cnewer $save_path/$more_recent ! -type d -print > $save_path/list_$incr$user$the_time.txt");
+ system("find $path_name -cnewer $save_path/$more_recent $find_args_user > $save_path/list_$incr$user$the_time.txt");
if (!cat_("$save_path/list_$incr$user$the_time.txt")) {
system("rm $save_path/list_$incr$user$the_time.txt");
} else {
- system("$tar_cmd_user -f $save_path/backup_$incr$user$the_time.$tar_ext -T $save_path/list_$incr$user$the_time.txt");
+ system("$tar_cmd_cuser -f $save_path/backup_$incr$user$the_time.$tar_ext -T $save_path/list_$incr$user$the_time.txt");
push @file_list_to_send_by_ftp, "$save_path/backup_$incr$user$the_time.$tar_ext";
push @file_list_to_send_by_ftp, "$save_path/list_$incr$user$the_time.txt";
$results .= "\nfile: $save_path/backup_$incr$user$the_time.$tar_ext\n";
@@ -1392,15 +1407,15 @@ sub build_backup_files() {
}
} else {
#- need this for the first pass too, if we're offloading the backups to other media (sb)
- system("find $path_name ! -type d -print > $save_path/list_base_user_$user$the_time.txt");
- system("$tar_cmd_user -f $save_path/backup_base_user_$user$the_time.$tar_ext $path_name");
+ system("find $path_name $find_args_user > $save_path/list_base_user_$user$the_time.txt");
+ system("$tar_cmd_cuser -f $save_path/backup_base_user_$user$the_time.$tar_ext $path_name");
push @file_list_to_send_by_ftp, "$save_path/backup_base_user_$user$the_time.$tar_ext";
push @file_list_to_send_by_ftp, "$save_path/list_base_user_$user$the_time.txt";
$results .= "\nfile: $save_path/backup_base_user_$user$the_time.$tar_ext\n";
}
} else {
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");
+ system("$tar_cmd_cuser -f $save_path/backup_user_$_$the_time.$tar_ext $path_name");
push @file_list_to_send_by_ftp, "$save_path/backup_user_$_$the_time.$tar_ext";
$results .= "\nfile: $save_path/backup_user_$user$the_time.$tar_ext\n";
}
@@ -1410,6 +1425,20 @@ sub build_backup_files() {
$interactive and progress($pbar3, $plabel3, 0.4, N("Hard Disk Backup files..."));
if (@list_other) {
+ my $find_args_other = $find_args;
+ if ($backupignore) {
+ foreach my $dir (@list_other) {
+ if (-d $dir) {
+ my @ignore_files = cat_("$dir/.backupignore");
+ -f "$dir/.backupignore" and $tar_cmd_other .= " -X $dir/.backupignore";
+ foreach (@ignore_files) {
+ chop;
+ $find_args_other .= " ! -name '" . $_ . "'";
+ }
+ }
+ }
+ }
+ $find_args_other .= " -print";
if ($backup_other_versions) {
$incr = "incr_other";
$incr =~ s/incr/diff/ if $other_diff_mode;
@@ -1417,7 +1446,7 @@ sub build_backup_files() {
my @more_recent = grep { /^list_incr_other/ } sort @dir_content;
$more_recent = pop @more_recent;
$DEBUG and print "more recent file: $more_recent\n";
- system("find @list_other -cnewer $save_path/$more_recent ! -type d -print > $save_path/list_incr_other$the_time.txt");
+ system("find @list_other -cnewer $save_path/$more_recent $find_args_other > $save_path/list_incr_other$the_time.txt");
if (!cat_("$save_path/list_incr_other$the_time.txt")) {
system("rm $save_path/list_incr_other$the_time.txt");
} else {
@@ -1431,7 +1460,7 @@ sub build_backup_files() {
my @more_recent = grep { /^list_base_other/ } sort @dir_content;
$more_recent = pop @more_recent;
$DEBUG and print "more recent file: $more_recent\n";
- system("find @list_other -cnewer $save_path/$more_recent ! -type d -print > $save_path/list_$incr$the_time.txt");
+ system("find @list_other -cnewer $save_path/$more_recent $find_args_other > $save_path/list_$incr$the_time.txt");
if (!cat_("$save_path/list_$incr$the_time.txt")) {
system("rm $save_path/list_$incr$the_time.txt");
} else {
@@ -1443,7 +1472,7 @@ sub build_backup_files() {
}
} else {
#- need this for the first pass too, if we're offloading the backups to other media (sb)
- system("find @list_other ! -type d -print > $save_path/list_base_other$the_time.txt");
+ system("find @list_other $find_args_other > $save_path/list_base_other$the_time.txt");
system("$tar_cmd_other -f $save_path/backup_base_other$the_time.$tar_ext @list_other");
push @file_list_to_send_by_ftp, "$save_path/backup_base_other$the_time.$tar_ext";
push @file_list_to_send_by_ftp, "$save_path/list_base_other$the_time.txt";
@@ -1559,7 +1588,6 @@ sub build_backup_files() {
#- clean up HD files if del_hd_files and media isn't hd
if ($del_hd_files && ($where_cd || $where_tape || $where_net) && $daemon_media ne 'hd') {
foreach (@file_list_to_send_by_ftp) {
-# unlink($_) if (/$tar_ext$/) && (!/backup_base/);
unlink($_) if /$tar_ext$/;
}
}
@@ -1577,12 +1605,8 @@ my @list_of_rpm_to_install;
sub require_rpm {
my $all_rpms_found = 1;
my $res;
-# my @file_cache = cat_("/var/log/rpmpkgs");
@list_of_rpm_to_install = ();
-#- reverted to old method - /var/log/rpmpkgs is not always accurate
-# my($pkg) = @_;
foreach my $pkg (@_) {
-# $res = grep /$pkg/, @file_cache;
$res = system("rpm -q $pkg > /dev/null");
if ($res == 256) {
$all_rpms_found = 0;
@@ -2821,6 +2845,9 @@ sub system_state() {
$system_state .= N("\tBackups use tar and gzip\n");
}
+ $system_state .= N("\tUse .backupignore files\n") if $backupignore;
+ $system_state .= N("\tSend mail to %s\n", $user_mail) if $user_mail;
+
$daemon_media and $system_state .= N("\n- Daemon (%s) include:\n", $when_space);
$daemon_media eq 'hd' and $system_state .= N("\t-Hard drive.\n");
$daemon_media eq 'cd' and $system_state .= N("\t-CDROM.\n");