#!/usr/bin/perl -w
#
# Siehe http://www.schaarwaechter.de/rsyncbackup.html
# Version 1.0 10/05
# Version 1.1 11/06 Kleine Bugs
#
use Date::Calc qw(:all);
use Data::Dumper;
our $logpath="/root/backup/logs";
our $output="/srv/www/htdocs/backup/analyse.html";
our $linkpath="/sicherungslogs";
our @dows=qw(Monday Tuesday Wednesday Thursday Friday Saturday Sunday);
our %data;
our %youngest;
opendir(DIR,$logpath) or die "Could not open $logpath: $!\n";
while (my $file=readdir(DIR)) {
my $startzeit="";
my $endezeit="";
my $startcp="";
my $endecp="";
my $rsyncstart="";
my $rsyncende="";
my $rsyncfailed="";
my $beforebackupfailed="";
my $alteloeschenstart="";
my $alteloeschenende="";
my $nofiles="";
my $nofilestrans="";
my $totalsize=0;
my $totalsizetrans=0;
my $filelistsize=0;
my @rsyncerrors;
next if ($file=~m/^\.{1,2}/);
next if (not $file=~m/^backup_(.*)-(.*?)\.log$/);
my $server=$1;
my $dow=$2;
open(FILE,"$logpath/$file") or die "Could not open $logpath/$file: $!\n";
while (my $z=
Das Restore von Daten, sollte es einmal notwendig sein, kann zur Zeit nur per
Kommandozeile geschehen. Dazu muss jemand mit root-Rechten auf lxbackup die entsprechende
Datei/Verzeichnis aus /export/backup/servername (aktuelle Sicherungen) bzw. /export/generationen/servername
(Generationensicherungen) finden und dann den folgenden Befehl verwenden.
#;
if (not defined($youngest{$server."remember"}) or $youngest{$server."remember"} lt $startzeit) {
$youngest{$server}=$dow;
$youngest{$server."remember"}=$startzeit;
}
}
closedir(DIR);
my @jetzt=&Today_and_Now();
my $jetzt="$jetzt[2].$jetzt[1].$jetzt[0], $jetzt[3]:$jetzt[4]:$jetzt[5]";
print <
$file Start $start Dauer ges. $dauer Dauer cp $cpdauer Dauer rm altes B. $alteloeschendauer Dauer rsync: $rsyncdauer Dateien ges. $nofiles Dateien transf. $nofilestrans Dateimenge ges. $totalsize GB Dateimenge transf. $totalsizetrans GB rsync-Dateiliste $filelistsize MB (rsync-)Fehler $rsyncerrors Der Backupserver
Verfuegbarer Plattenplatz auf lxbackup:
HTML
open(PIPE,"df -h|");
while (
root\@lxbackup> rsync -avz -e "ssh -i /root/.ssh/rsync-key" QUELLE ZIEL
In dem folgenden Beispiel soll die index.html auf dem Webserver restauriert werden:
root\@lxbackup> rsync -avz -e "ssh -i /root/.ssh/rsync-key" /export/backup/lx1/srv/www/htdocs/index.html lx1:/srv/www/htdocs
Achtung: Dieser Befehl überschreibt die Datei auf dem Webserver sofort!
Anstelle der Datei kann auch ein Verzeichnis bzw Wildcard (*) angegeben werden. Bitte sehr genau darauf achten,
was wohin
geschrieben wird - ich sags nochmal: Enter nach dem obigen Befehl und er fängt sofort an!
Berücksichtigt werden alle Sicherungen, die innerhalb der letzten Woche gelaufen sind.
In der letzten Zeile rot markiert sind Sicherungen mit Abbrüchen/Problemen - in diesem Fall Log ansehen,
auch wenn eine Null in rot gezeigt wird! Die Zahl zählt nur die Fehler, die beim rsync-Lauf
aufgetreten sind, wenn z.B. ein Befehl, der vor dem rsync ausgeführt werden soll, gescheitert ist, startet rsync
aber gar nicht erst.
Gelb markiert sind die jeweils letzten Sicherungen.
Stand: $jetzt
| HTML foreach $dow(@dows) { print qq# | $dow | #; } print qq#|
|---|---|---|
| $srv | #; foreach $dow(@dows) { if (defined $data{$srv}{$dow}) { if ($youngest{$srv} eq $dow) { $data{$srv}{$dow}=~s/§heute§/bggelb/sg; } else { $data{$srv}{$dow}=~s/§heute§/nix/sg; } print qq##,$data{$srv}{$dow},qq# | #; } else { print qq##; } } } |