summaryrefslogtreecommitdiffstats
path: root/perl-install/standalone/drakbackup
diff options
context:
space:
mode:
authorStew Benedict <stewb@mandriva.org>2005-05-03 12:10:40 +0000
committerStew Benedict <stewb@mandriva.org>2005-05-03 12:10:40 +0000
commit297217bfd792ad63cd338a5ff27180aa9e8528a8 (patch)
treeefa34e291dcf530833433e296da3bdc8f395fb3c /perl-install/standalone/drakbackup
parent954e51dc037721f49e4979c7ef1c995c8aca1619 (diff)
downloaddrakx-297217bfd792ad63cd338a5ff27180aa9e8528a8.tar
drakx-297217bfd792ad63cd338a5ff27180aa9e8528a8.tar.gz
drakx-297217bfd792ad63cd338a5ff27180aa9e8528a8.tar.bz2
drakx-297217bfd792ad63cd338a5ff27180aa9e8528a8.tar.xz
drakx-297217bfd792ad63cd338a5ff27180aa9e8528a8.zip
Clarify quota message, optional delete old backups (#15066).
Optional mail "From" address (#15293). Fix automagic addition of /root to backups when not desired.
Diffstat (limited to 'perl-install/standalone/drakbackup')
-rwxr-xr-xperl-install/standalone/drakbackup50
1 files changed, 40 insertions, 10 deletions
diff --git a/perl-install/standalone/drakbackup b/perl-install/standalone/drakbackup
index 6bd022a95..27d640e84 100755
--- a/perl-install/standalone/drakbackup
+++ b/perl-install/standalone/drakbackup
@@ -91,8 +91,8 @@ my $std_device;
my @tape_devices;
my $in;
-# config. FILES -> Default PATH & Global variables.
-my @user_list = $ENV{USER};
+# config. FILES -> Default PATH & Global variables.
+my @user_list;
my $cfg_dir = "/etc/drakxtools/drakbackup/";
my $cfg_file = $cfg_dir . "drakbackup.conf";
my $log_file = "/var/log/drakbackup";
@@ -127,6 +127,7 @@ if ($ENV{USER} ne 'root' && $ENV{HOME} ne '/root') {
standalone::explanations("Running as $ENV{USER}...");
#- does not get defined when run from cron
$user_home = "/home/$ENV{USER}" if $user_home eq '';
+ @user_list = $ENV{USER};
$cfg_dir = "$user_home/.drakbackup/";
$conf{PATH_TO_SAVE} = $cfg_dir . "backups";
$log_file = $cfg_dir . "drakbackup.log";
@@ -156,6 +157,7 @@ sub setup_tooltips() {
'use_incremental' => N("Incremental backups only save files that have changed or are new since the last backup."),
'use_differential' => N("Differential backups only save files that have changed or are new since the original 'base' backup."),
'send_mail_to' => N("This should be a local user or email address that you want the backup results sent to. You will need to define a functioning mail server."),
+ 'send_mail_from' => N("This should be the return address that you want the backup results sent from. Default is drakbakup."),
'backupignore' => N("Files or wildcards listed in a .backupignore file at the top of a directory tree will not be backed up."),
'delete_files' => N("For backups to other media, files are still created on the hard drive, then moved to the other media. Enabling this option will remove the hard drive tar files after the backup."),
'dir_or_module' => N("Some protocols, like rsync, may be configured at the server end. Rather than using a directory path, you would use the 'module' name for the service path."),
@@ -451,6 +453,8 @@ sub read_conf_file() {
$conf{MAX_SPACE} = 1000.0 if !exists($conf{MAX_SPACE});
$conf{USE_HD} = 1 if !exists($conf{USE_HD});
$conf{OPTION_COMP} = "tar.gz" if !exists($conf{OPTION_COMP});
+ $conf{FROM_MAIL} = "drakbackup" if !exists($conf{FROM_MAIL});
+ $conf{DEL_OLD} = 0 if !exists($conf{DEL_OLD});
# deal with users that may have been deleted from the system
check_valid_users() if $cfg_file_exist;
$use_hd = !($conf{USE_CD} || $conf{USE_TAPE} || $conf{USE_NET});
@@ -918,7 +922,7 @@ sub send_mail {
my $datem = `date`;
use Mail::Mailer;
my $mailer = Mail::Mailer->new('smtp', Server => $conf{SMTP_SERVER});
- $mailer->open({ From => 'drakbackup',
+ $mailer->open({ From => $conf{FROM_MAIL},
To => $conf{USER_MAIL},
Subject => "DrakBackup report on $datem",
})
@@ -959,9 +963,10 @@ sub build_backup_files() {
$tar_cmd .= "z" if $conf{OPTION_COMP} eq "tar.gz";
$tar_cmd .= " ";
+ clean_old_backups();
my $used_space = check_storage_quota($conf{PATH_TO_SAVE});
if ($used_space) {
- my $msg = N("Backup quota exceeded!\n%d MB used vs %d MB allocated.", $used_space, $conf{MAX_SPACE});
+ my $msg = N("Backup destination quota exceeded!\n%d MB used vs %d MB allocated.", $used_space, $conf{MAX_SPACE});
show_warning("f", $msg);
$interactive and gtkset_mousecursor_normal();
$results .= $msg;
@@ -1242,6 +1247,14 @@ sub clean_dest {
system("cd $conf{PATH_TO_SAVE} && rm -f backup*$wildcard*");
}
+sub clean_old_backups() {
+ if ($conf{DEL_OLD} && $conf{USE_HD}) {
+ foreach ('*_diff_*', '*_incr_*') {
+ system("find $conf{PATH_TO_SAVE} -name $_ -mtime +$conf{DEL_OLD} | xargs rm -f");
+ }
+ }
+}
+
sub do_find {
my ($newer, $more_args, $into, @where) = @_;
#- $newer may be undef - if it's defined then "-cnewer $newer"
@@ -1962,8 +1975,10 @@ sub advanced_where_hd {
$conf{MAX_SPACE} = int(0.8 * get_free_space($conf{PATH_TO_SAVE})) if -d $conf{PATH_TO_SAVE};
}
my $adj = Gtk2::Adjustment->new($conf{MAX_SPACE}, 0.0, $conf{MAX_SPACE}, 10.0, 5.0, 0.0);
+ my $adj2 = Gtk2::Adjustment->new($conf{DEL_OLD}, 0.0, 300.0, 1.0, 10.0, 0.0);
my $spinner;
-
+ my $spinner2;
+
my $size_group = Gtk2::SizeGroup->new('horizontal');
my $label_size_group = Gtk2::SizeGroup->new('horizontal');
gtkpack($advanced_box,
@@ -1975,22 +1990,26 @@ sub advanced_where_hd {
1, gtkset_sensitive($save_path_entry = Gtk2::Entry->new, $conf{USE_HD}),
0, gtkset_sensitive($button = gtksignal_connect(Gtk2::Button->new, clicked => sub {
filedialog_generic(N("Directory to save to"), \$save_path_entry);
- }), $conf{USE_HD}),
- ),
+ }), $conf{USE_HD})),
),
0, Gtk2::VBox->new(0, 6),
0, gtkpack_(Gtk2::HBox->new(0,10),
- 0, gtkset_sensitive(my $l2 = Gtk2::Label->new(N("Maximum size\n allowed for Drakbackup (MB)")), $conf{USE_HD}),
+ 0, gtkset_sensitive(my $l2 = Gtk2::Label->new(N("Maximum disk space\n allocated for backups (MB)")), $conf{USE_HD}),
1, gtkset_sensitive($spinner = Gtk2::SpinButton->new($adj, 0, 0), $conf{USE_HD}),
),
+ 0, gtkpack_(Gtk2::HBox->new(0,10),
+ 0, gtkset_sensitive(my $l3 = Gtk2::Label->new(N("Delete incremental or differential\n backups older than N days\n (0 is keep all backups) to save space")), $conf{USE_HD}),
+ 1, gtkset_sensitive($spinner2 = Gtk2::SpinButton->new($adj2, 0, 0), $conf{USE_HD}),
+ ),
),
);
- $size_group->add_widget($_) foreach $select_box, $spinner;
- $label_size_group->add_widget($_) foreach $l1, $l2;
+ $size_group->add_widget($_) foreach $select_box, $spinner, $spinner2;
+ $label_size_group->add_widget($_) foreach $l1, $l2, $l3;
$button->add(gtkpack(Gtk2::HBox->new(0,10), gtkcreate_img("ic82-dossier-32")));
$save_path_entry->set_text($conf{PATH_TO_SAVE});
$spinner->signal_connect('changed', sub { $conf{MAX_SPACE} = $spinner->get_text });
+ $spinner2->signal_connect('changed', sub { $conf{DEL_OLD} = $spinner2->get_text });
$save_path_entry->signal_connect('changed', sub {
$conf{PATH_TO_SAVE} = $save_path_entry->get_text;
if (-d $conf{PATH_TO_SAVE}) {
@@ -2221,6 +2240,12 @@ sub advanced_options() {
0, gtkset_sensitive(my $mail_entry = Gtk2::Entry->new, $conf{SEND_MAIL}),
),
0, gtkpack_(Gtk2::HBox->new(0,10),
+ 1, Gtk2::HBox->new(0,10),
+ 0, N("Return address for sent mail:"),
+ 1, Gtk2::HBox->new(0,10),
+ 0, gtkset_sensitive(my $from_entry = Gtk2::Entry->new, $conf{SEND_MAIL}),
+ ),
+ 0, gtkpack_(Gtk2::HBox->new(0,10),
1, Gtk2::HBox->new(0,10),
0, N("SMTP server for mail:"),
1, Gtk2::HBox->new(0,10),
@@ -2234,11 +2259,14 @@ sub advanced_options() {
check_list([$check_mail, \$conf{SEND_MAIL}], [$check_del_hd_files, \$conf{DEL_HD_FILES}], [$check_backupignore, \$conf{BACKUPIGNORE}]);
$mail_entry->set_text($conf{USER_MAIL});
$mail_entry->signal_connect('changed', sub { $conf{USER_MAIL} = $mail_entry->get_text });
+ $from_entry->set_text($conf{FROM_MAIL});
+ $from_entry->signal_connect('changed', sub { $conf{FROM_MAIL} = $from_entry->get_text });
$smtp_entry->set_text($conf{SMTP_SERVER});
$smtp_entry->signal_connect('changed', sub { $conf{SMTP_SERVER} = $smtp_entry->get_text });
$entry_comp_mode->entry->signal_connect('changed', sub { $conf{OPTION_COMP} = $entry_comp_mode->entry->get_text });
set_help_tip($check_backupignore, 'backupignore');
set_help_tip($check_mail, 'send_mail_to');
+ set_help_tip($from_entry, 'send_mail_from');
set_help_tip($check_del_hd_files, 'delete_files');
fonction_env(\$box_options, \&advanced_options, \&advanced_box);
$up_box->show_all;
@@ -2507,6 +2535,7 @@ sub system_state() {
$conf{OTHER_FILES} and $system_state .= "\t\t$_\n" foreach @other_files;
$conf{USE_HD} and $system_state .= N("\n- Save on Hard drive on path: %s\n", $conf{PATH_TO_SAVE});
$conf{USE_HD} and $system_state .= N("\tLimit disk usage to %s MB\n", $conf{MAX_SPACE});
+ $conf{DEL_OLD} and $system_state .= N("\tDelete backups older than %s day(s)\n", $conf{DEL_OLD});
if ($conf{DEL_HD_FILES} && ($conf{USE_CD} || $conf{USE_TAPE} || $conf{USE_NET}) && $conf{DAEMON_MEDIA} ne 'hd') {
$system_state .= N("\n- Delete hard drive tar files after backup.\n");
@@ -2534,6 +2563,7 @@ sub system_state() {
$system_state .= N("\tUse .backupignore files\n") if $conf{BACKUPIGNORE};
$system_state .= N("\tSend mail to %s\n", $conf{USER_MAIL}) if $conf{SEND_MAIL};
+ $system_state .= N("\tSend mail from %s\n", $conf{FROM_MAIL}) if $conf{SEND_MAIL};
$system_state .= N("\tUsing SMTP server %s\n", $conf{SMTP_SERVER}) if $conf{SEND_MAIL};
$conf{DAEMON_MEDIA} and $system_state .= N("\n- Daemon, %s via:\n", $conf{DAEMON_TIME_SPACE});