ESR Backup Anleitung

Backup, Restore und Transfer von Daten
Post Reply
alexey
Posts: 4
Joined: 2002-12-22 11:11
 

ESR Backup Anleitung

Post by alexey »

Hier habe ich ne kleine Anleitung zu ESR Backup zusammengestellt:

Installieren von Perl Modulen:
Starten Sie zuerst den CPAN Shell mit:

Code: Select all

# perl -MCPAN -e shell
CPAN Updaten:

Code: Select all

cpan>install Bundle::CPAN
alle angaben mit default werten bestätigen,
Nach der Fertigstellung:

Code: Select all

cpan>reload cpan
Digest::MD5 installieren

Code: Select all

cpan>install Digest::MD5
Restlichen Module installieren:

Code: Select all

cpan> install Net::FTP
cpan> install Crypt::Blowfish
cpan> install Crypt::CBC
mit exit beenden sie cpan

Bearbeiten der Config Datei:

im ESR Ordner:

Code: Select all

# mcedit config/esrbackup.cfg
# Name für Backup
ARCHIVE_LABEL = backup

# Temp Ordner
TEMP_DIR = /var/tmp

# Pfad zum tar Programm
TAR_PATH = /bin/tar

usw...

Bearbeiten der filelist Datei:

bitte zuerst die Beispieldaten entfernen

dann
++/srv
um den /srv ordner zu sichern

Zugrifferechtigungen setzen

Code: Select all

#chmod 755 esr-backup.pl
#chmod 755 decrypt-archive.pl
#chmod 755 run_esr.sh
Startscript anpassen:

Code: Select all

mcedit run_esr.sh
und den scriptpfad ändern

danach kann man den script starten oder in den daily cron eintragen
cheops
Posts: 8
Joined: 2002-12-01 15:54
 

Re: ESR Backup Anleitung

Post by cheops »

Ich häng mich da einfach mal dran :wink:

Da mein Backup doch ein wenig gross wurde, habe ich das Backup aufgeteilt. Das Problem bei der Sache ist, das ESR leider die file-list.cfg fest reingecodet hat.

Folgende Ã?nderungen habe ich vorgenommen:

esr-backup.pl Zeile 265:

Code: Select all

open (FLIST,"$pwd/config/file-list.cfg") || die "ERROR :: can not open $pwd/config/file-list.cfg ::$!n";
ändern in:

Code: Select all

open (FLIST,"$pwd/config/file-list-$alabel.cfg") || die "ERROR :: can not open $pwd/config/file-list-$alabel.cfg ::$!n";
Als Beispiel nehme ich zwei Backup-Configs
esr-backup-ETC.cfg
esr-backup-WWW.cfg
In diesen Dateien spezifiziert man nun ein eindeutiges Archivlabel (alle anderen Einstellungen sollten natürlich auch passen):
esr-backup-ETC.cfg:

Code: Select all

ARCHIVE_LABEL = ETC
esr-backup-WWW.cfg:

Code: Select all

ARCHIVE_LABEL = WWW
2 individuelle Filekonfigs für die Backupjobs anlegen
file-list-ETC.cfg
file-list-WWW.cfg

Zum Schluss noch das run_esr.sh Script anpassen

Code: Select all

 [snip header].....
# Backups starten
./esr-backup.pl -c ./config/esr-backup-ETC.cfg
./esr-backup.pl -c ./config/esr-backup-WWW.cfg
Jetzt kann man das Backup wie gewohnt per

Code: Select all

./run_esr.sh
starten. Für jede Konfiguration wird dann im Backupverzeichnis bzw. auf dem FTP-Server ein eigenes Archiv angelegt.

Was mich noch ein wenig an der Installation gestört hat waren die Datei- und Verzeichnisberechtigungen.
Wird das Backup verschlüsselt, sollte der Key unbedingt nur von dem User lesbar sein, mit dem das Backup gestartet wird. Ebenso sollte das ESR tmp Verzeichnis mit den Rechten 700 versehen werden. Ansonsten kann sich jeder User an den Archiven bedienen, die dort temporär abgelegt werden.
Ich habe für das komplette Verzeichnis inkl. aller Dateien die Rechte auf 700 gesetzt.
yoho
Posts: 7
Joined: 2004-10-21 07:36
 

Re: ESR Backup Anleitung

Post by yoho »

Hallo zusammen,

nachdem ich nun mit esr-backup eine schöne Lösung gefunden habe Backups auf FTP zu machen, das ganze mit Hilfe des Hacks (vielen Dank) sogar einzelne Archive für beliebige Verz. erstellt, fehlte nur noch etwas gegen meine Faulheit :-)
Da ich alle /srv/www/htdocs/webXXX Verz. einzeln sichern wollte egal ob welche dazukommen oder gelöscht werden hab ich ein kleines Perlscript erstellt, welches das für mich erledigt.
Nachdem ich nun hier schon so viel Hilfe gefunden habe, möchte ich es hier zur Verfügung stellen und hoffe es kann jemand was damit anfangen.

Code: Select all

#!/usr/bin/perl
#
# alte eintraege loeschen
#
opendir (DELE, "/home/backups/todo");
@liste = readdir DELE;
closedir DELE;
foreach $todel (@liste){
if ($todel =~ m/A.{9,10}-.+/i) {
print "dele: ".$todel."n";
unlink "/home/backups/todo/$todel";
}
}
#
# zu sichernde verzeichnisse ermitteln
#
opendir (WEBS, "/srv/www/htdocs");
@liste = readdir WEBS;
closedir WEBS;
#
# fuer jedes verzeichnis eigenen esr-backup.cfg schreiben
#
foreach $web (@liste) {
if ( $web =~ m/Aweb.+/) {
print $web."n";
open (ESRCFGIN, "/home/backups/esr-backup.cfg.tmp");
@inhalt = <ESRCFGIN> ;
close (ESRCFGIN);
open (ESRCFGOUT, ">/home/backups/todo/esr-backup-$web.cfg");
foreach $esrcfg (@inhalt) {
$esrcfg =~ s/###label###/$web/i;
print ESRCFGOUT ("$esrcfg");
}
close (ESRCFGOUT);
#
# fuer jedes verzeichnis eigene file-list.cfg schreiben
#
open (FLISTIN, "/home/backups/file-list.cfg.tmp");
@inhalt = <FLISTIN> ;
close (FLISTIN);
open (FLISTOUT, ">/home/backups/todo/file-list-$web.cfg");
foreach $flistcfg (@inhalt) {
$flistcfg =~ s/###filelist###/++/srv/www/htdocs/$web/htmln/i;
print FLISTOUT ("$flistcfg");
}
close (FLISTOUT);
}
}
#
# esr-backup und file-list fuer sql schreiben
#
$web = "sql";
print $web."n";
open (ESRCFGIN, "/home/backups/esr-backup.cfg.tmp");
@inhalt = <ESRCFGIN> ;
close (ESRCFGIN);
open (ESRCFGOUT, ">/home/backups/todo/esr-backup-$web.cfg");
foreach $esrcfg (@inhalt) {
$esrcfg =~ s/###label###/$web/i;
print ESRCFGOUT ("$esrcfg");
}
close (ESRCFGOUT);
open (FLISTIN, "/home/backups/file-list.cfg.tmp");
@inhalt = <FLISTIN> ;
close (FLISTIN);
open (FLISTOUT, ">/home/backups/todo/file-list-$web.cfg");
foreach $flistcfg (@inhalt) {
$flistcfg =~ s/###filelist###/++/root/MySQL-Backupn/i;
print FLISTOUT ("$flistcfg");
}
close (FLISTOUT);
#
# jedes verzeichnis in run_esr.sh eintragen
#
open (RUNSHIN, "/home/backups/run_esr.sh.tmp");
@inhalt = <RUNSHIN> ;
close (RUNSHIN);
open (RUNSHOUT, ">/home/backups/todo/run_esr.sh");
print RUNSHOUT @inhalt;

foreach $web (@liste) {
if ( $web =~ m/Aweb.+/) {
print RUNSHOUT ("./esr-backup.pl -c /home/backups/todo/esr-backup-$web.cfgn");
}
}
close (RUNSHOUT);
Ã?nderungen in esr-backup.cfg als esr-backup.cfg.tmp

Code: Select all

ARCHIVE_LABEL = ---label---
Meine file-list.cfg.tmp

Code: Select all

...
########################################################################
#BE SURE TO REMOVE EXAMPLES BELOW BEFORE RUNNING FOR THE FIRST TIME
#

---filelist---
Meine run_esr.sh.tmp

Code: Select all

...
# Set the correct path to the esr-backup.pl script
#########################################################################
#Set the path to something sensible for your system
PATH=/usr/local/bin:/usr/bin
export PATH
#change the path below to match the full path to the directory esr-backup.pl resides in
cd /full/path/to/the/esr/directory
Das MySQL Verz. wird noch mit eingefügt, da ich dort mit Hilfe des automysqlbackup.sh Scripts, welches ebenfalls hier zu finden ist, die MySQL-DB's sichern lasse.
Mit ein paar Anpassungen an eigenen Bedürfnisse sollte man es schon verwenden können.

Für Anregungen, Kritik, Ã?nderungen, Hinweise u.s.w. wäre ich sehr dankbar, da ich kein Perl Spezialist bin und an dem Script sicher einiges zu verbessern wäre.
Bei mir funktioniert das ganze nun seit ca. zwei Wochen wunderbar.
Hoffe es ist brauchbar.

Grüße

Yoho
tanami
Posts: 39
Joined: 2005-06-06 09:59
 

ESR - BACKUP

Post by tanami »

Hallo weiss von Euch jemand warum ich die Files troitzdem im ESR Backup habe ?
  • -rw-r--r-- 1 root root 1005453312 Jul 3 16:53 Sunday-7-3-2005--Full-Server12.com.tar.gz
    -rw-r--r-- 1 root root 2187511 Jul 3 16:50 curbak.tmp
    -rw-r--r-- 1 root root 3246101 Jul 3 16:50 flistServer12.com.tmp
    -rw-r--r-- 1 root root 1005453312 Jul 3 16:53 Sunday-7-3-2005--Full-Server12.com.tar.gz
    -rw-r--r-- 1 root root 2187511 Jul 3 16:50 curbak.tmp
    -rw-r--r-- 1 root root 3246101 Jul 3 16:50 flistServer12.com.tmp
    r543434:/home/backup_new # more curbak.tmp |grep Sunday-7*
    r543434:/home/backup_new # more flistServer12.com.tmp |grep Sunday-7*
    r543434:/home/backup_new # more flistServer12.com.tmp |grep Sunday-7*
    r543434:/home/backup_new # more curbak.tmp |grep Sunday-7*
    begin 644 /home/backup_new/Sunday-7-3-2005--Full-Server12.com.tar.gz
    r543434:/home/backup_new # more flistServer12.com.tmp |grep Sunday-7*
    begin 644 /home/backup_new/Sunday-7-3-2005--Full-Server12.com.tar.gz
    r543434:/home/backup_new #:/home/backup_new # more curbak.tmp |grep Sunday-7*
    r543434:/home/backup_new # more flistServer12.com.tmp |grep Sunday-7*
    r543434:/home/backup_new # more flistServer12.com.tmp |grep Sunday-7*
    r543434:/home/backup_new # more curbak.tmp |grep Sunday-7*
    begin 644 /home/backup_new/Sunday-7-3-2005--Full-Server12.com.tar.gz
    r543434:/home/backup_new # more flistServer12.com.tmp |grep Sunday-7*
    begin 644 /home/backup_new/Sunday-7-3-2005--Full-Server12.com.tar.gz
    r543434:/home/backup_new
    #
Diese Files habe ich in die file-list.cfg eingetragen:

++/home
--/home/backup_new/
--/home/backup/
++/root
++/etc
++/srv
++/var
--/var/lib/mysql/Server5-3ss032
++/bin


==> PS. geht auch nicht wenn ich --/home/backup_new setze
Wäre Super es könnte mir da jemand helfen oder vielleicht habt ihr ja auch das Problem das ESR das TMP Verzeichnis trotzdem mit ins Backup nimmt, obwohl es -- also Skipppen sollte ....

Gruss Joerg
heart
Posts: 8
Joined: 2004-10-29 09:11
 

Re: ESR Backup Anleitung

Post by heart »

Hab alles so gemacht wie im ersten Post und anschl. führe ich zum Testen manuell ./run_esr.sh aus.

Ich bekomme folgenden Fehler:

Code: Select all

# ./run_esr.sh
/bin/tar: gzip: Kann exec nicht ausführen.: Datei oder Verzeichnis nicht gefunden
/bin/tar: Nicht behebbarer Fehler: Programmabbruch.
die file-list.cfg sieht so aus:

Code: Select all

++/etc
++/usr/share/squirrelmail
++/var/lib/squirrelmail/data
++/var/lib/mysql
++/var/kunden
++/var/www/
TAR_PATH habe ich /bin/tar (was mir "which tar" auch bestätigt)

Was stimmt bei mir nicht :? :?:


edit: hab in der cfg noch ein v (für verbose) bei den tar-optionen hinzugefügt, der Fehler sieht dann so aus:

Code: Select all

/bin/tar: /tmp/Tuesday-7-5-2005-0638-Incremental-backup.tar.gz: Kann stat nicht ausführen.: Datei oder Verzeichnis nicht gefunden
/bin/tar: Fehler beim Beenden, verursacht durch vorhergehende Fehler.
BACKUP DID NOT COMPLETE :: ERROR :: moving local file '/tmp/Tuesday-7-5-2005-0638-Incremental-backup.tar.gz' ::Datei oder Verzeichnis nicht gefunden
heart
Posts: 8
Joined: 2004-10-29 09:11
 

Re: ESR Backup Anleitung

Post by heart »

Problem scheint gelöst zu sein, es funktioniert jetzt bei mir....

Hab in der cfg-datei den tmp-Pfad von /tmp zu "nichts" geändert (also leer gelassen, so wird das ESR-tmp-Verz. genommen) und nun geht's!!?!

(...und ja, /tmp hatte 777)

misteriös 8O :roll:
User avatar
Joe User
Project Manager
Project Manager
Posts: 11191
Joined: 2003-02-27 01:00
Location: Hamburg
Contact:
 

Re: ESR Backup Anleitung

Post by Joe User »

Heart wrote:(...und ja, /tmp hatte 777)
Glaube ich nicht...
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
heart
Posts: 8
Joined: 2004-10-29 09:11
 

Re: ESR Backup Anleitung

Post by heart »

Code: Select all

drwxrwxrwt     3 root root  16384 2005-07-05 19:37 tmp
Andere Frage:
Wie bringe ich ESR dazu bei der Sicherung auch einen dump der kompletten DB mitzusichern?

*.sql file täglich kurz vor Ausführung des ESR-cronjobs ebenfalls per cronjob anlegen lassen (durch mysqldump....) und diese eine Datei dann in die file-list.cfg mit aufnehmen?

Oder gibt es andere Möglichkeiten?

Danke
User avatar
Joe User
Project Manager
Project Manager
Posts: 11191
Joined: 2003-02-27 01:00
Location: Hamburg
Contact:
 

Re: ESR Backup Anleitung

Post by Joe User »

Heart wrote:

Code: Select all

drwxrwxrwt     3 root root  16384 2005-07-05 19:37 tmp
Das ist 1777, nicht 0777 :roll:
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
tanami
Posts: 39
Joined: 2005-06-06 09:59
 

Re: ESR - BACKUP

Post by tanami »

Keiner eine Idee ?????
tanami wrote:Hallo weiss von Euch jemand warum ich die Files troitzdem im ESR Backup habe ?
  • -rw-r--r-- 1 root root 1005453312 Jul 3 16:53 Sunday-7-3-2005--Full-Server12.com.tar.gz
    -rw-r--r-- 1 root root 2187511 Jul 3 16:50 curbak.tmp
    -rw-r--r-- 1 root root 3246101 Jul 3 16:50 flistServer12.com.tmp
    -rw-r--r-- 1 root root 1005453312 Jul 3 16:53 Sunday-7-3-2005--Full-Server12.com.tar.gz
    -rw-r--r-- 1 root root 2187511 Jul 3 16:50 curbak.tmp
    -rw-r--r-- 1 root root 3246101 Jul 3 16:50 flistServer12.com.tmp
    r543434:/home/backup_new # more curbak.tmp |grep Sunday-7*
    r543434:/home/backup_new # more flistServer12.com.tmp |grep Sunday-7*
    r543434:/home/backup_new # more flistServer12.com.tmp |grep Sunday-7*
    r543434:/home/backup_new # more curbak.tmp |grep Sunday-7*
    begin 644 /home/backup_new/Sunday-7-3-2005--Full-Server12.com.tar.gz
    r543434:/home/backup_new # more flistServer12.com.tmp |grep Sunday-7*
    begin 644 /home/backup_new/Sunday-7-3-2005--Full-Server12.com.tar.gz
    r543434:/home/backup_new #:/home/backup_new # more curbak.tmp |grep Sunday-7*
    r543434:/home/backup_new # more flistServer12.com.tmp |grep Sunday-7*
    r543434:/home/backup_new # more flistServer12.com.tmp |grep Sunday-7*
    r543434:/home/backup_new # more curbak.tmp |grep Sunday-7*
    begin 644 /home/backup_new/Sunday-7-3-2005--Full-Server12.com.tar.gz
    r543434:/home/backup_new # more flistServer12.com.tmp |grep Sunday-7*
    begin 644 /home/backup_new/Sunday-7-3-2005--Full-Server12.com.tar.gz
    r543434:/home/backup_new
    #
Diese Files habe ich in die file-list.cfg eingetragen:

++/home
--/home/backup_new/
--/home/backup/
++/root
++/etc
++/srv
++/var
--/var/lib/mysql/Server5-3ss032
++/bin


==> PS. geht auch nicht wenn ich --/home/backup_new setze
Wäre Super es könnte mir da jemand helfen oder vielleicht habt ihr ja auch das Problem das ESR das TMP Verzeichnis trotzdem mit ins Backup nimmt, obwohl es -- also Skipppen sollte ....

Gruss Joerg
wookkie
Posts: 19
Joined: 2004-08-12 14:04
 

und ISO-Format für die Backupdateien

Post by wookkie »

Gibt es eigentlich keine Möglichkeit ISO-Datumsformat bei den Backupdateien zu erreichen?
sartre
Posts: 327
Joined: 2002-05-12 18:02
Location: Duisburg
 

Re: ESR Backup Anleitung

Post by sartre »

Hallo zusammen,

vielleicht hat einer von euch einen Tip. Ich hab ESR testweise auf zwei verschiedene Server installiert und laufen lassen. Beim einem läuft es wunderbar durch, bei dem anderen gibt es die Meldung:
BACKUP DID NOT COMPLETE :: Reading from filehandle failed at ./esr-backup.pl line 357.
Zeile 357 ist bei mir

Code: Select all

my $newhash = Digest::MD5->new->addfile(*FILE)->hexdigest;
aus dem Block:

Code: Select all

sub check_md5 {
	my $fn = shift;
	open(FILE, $fn) || return("ERROR could not backup file $fn :: $!n");
	binmode(FILE);
	my $newhash = Digest::MD5->new->addfile(*FILE)->hexdigest;
	return($newhash);
}
Hat einer von euch Ahnung welches Modul ich wohl nach installieren muss?

Gruß Thomas
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten
Contact:
 

Re: ESR Backup Anleitung

Post by captaincrunch »

Auch wenn ich nur sehr wenig von Perl verstehe: ich denke nicht, dass es sich hier um ein fehlendes Modul handelt. Die Fehlermeldung bezieht sich ja eher auf das Filehandle (*FILE), daher würde ich in diese Richtung schauen.

Hth
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
sartre
Posts: 327
Joined: 2002-05-12 18:02
Location: Duisburg
 

Re: ESR Backup Anleitung

Post by sartre »

Thnx für die schnelle Antwort.
Was mich irritiert ist halt die Tatsache, dass dies ja bei den zwei Installationen um zwei identische handelt und wie gesagt auf dem einen Server auch hervorragend läuft.

Gruß Thomas

CaptainCrunch wrote:Auch wenn ich nur sehr wenig von Perl verstehe: ich denke nicht, dass es sich hier um ein fehlendes Modul handelt. Die Fehlermeldung bezieht sich ja eher auf das Filehandle (*FILE), daher würde ich in diese Richtung schauen.

Hth
Post Reply