#!/usr/bin/perl # # User backups # # --- Benoetigte Module use strict; use MIME::Base64 qw(encode_base64); use Time::localtime; # --- Einstellungen - bitte anpassen my $config_dir = '/etc/backup'; my $sendmail = '/usr/sbin/sendmail'; # --- Variablendefinition my $user = $ARGV[0]; my $mail = $ARGV[1]; my $tm = localtime (time()); my $boundary = "backup-" . $user . "-" . time(); my $filename = "backup-" . $user . "-" . sprintf ("%02d%02d%04d", $tm->mday, $tm->mon + 1, $tm->year + 1900) . ".tar.gz"; # --- Fehlerbehandlung die ("no user given") if ($user eq ""); die ("no mail address given") if ($mail eq ""); die ("no config file for user $user") if (!-e "$config_dir/$user"); # --- Backup-Pfade einlesen open (CFG, "<$config_dir/$user"); my @cfg = ; close (CFG); my $cfg = join ('', @cfg); $cfg =~ s/\n/ /g; # --- Backup-Archiv erstellen open (PIPE, "/bin/tar czf /tmp/$filename $cfg |"); close (PIPE); # --- Mail an sendmail uebergeben, Attachment Base64-encoden open (PIPE, "| $sendmail -t"); print PIPE "From: LDN Backup-Admin \n"; print PIPE "To: " . $mail . "\n"; print PIPE "Reply-To: Leonhard Fellermayr \n"; print PIPE "Subject: Ihr Backup vom " . sprintf ("%02d.%02d.%04d", $tm->mday, $tm->mon + 1, $tm->year + 1900) . "\n"; print PIPE "X-Mailer: backup.pl (c) 2002 by lf - info at leo dot dnsalias dot net\n"; print PIPE "X-Priority: 3\n"; print PIPE "Mime-Version: 1.0\n"; print PIPE "Content-type: multipart/mixed; boundary=$boundary\n"; print PIPE "\n"; print PIPE "--$boundary\n"; print PIPE "Content-type: text/plain; charset=us-ascii\n"; print PIPE "\n"; print PIPE "Sehr verehrte Benutzerin, sehr geehrter Benutzer,\n"; print PIPE "\n"; print PIPE "im Anhang finden Sie das regelmaessige Backup Ihrer Daten:\n"; print PIPE "\n"; print PIPE "\t* " . $_ . "\n" foreach (@cfg); print PIPE "\n"; print PIPE "Mit freundlichen Gruessen,\n"; print PIPE "\n"; print PIPE "Leonhard Fellermayr\n"; print PIPE "Sysadmin leo.dnsalias.net\n"; print PIPE "\n\n"; print PIPE "-- \n"; open (SIG, "; close (SIG); print PIPE "\n\n"; print PIPE "--$boundary\n"; print PIPE "Content-type: application/x-gzip\n"; print PIPE "Content-Transfer-Encoding: base64\n"; print PIPE "Content-Disposition: attachment; filename=\"$filename\"\n"; print PIPE "\n"; # --- Attachment encoden open (BCK, "