automatischer Backup auf FTP per CRON
Maresa P.
- webserver
Hallo liebes Forum,
ich besitze einen Linux Server (RedHat 9) und möchte eine MySQL Datenbank und einen Ordner (/var/backup/${DATUM}) mit biliebig vielen Unterordnern täglich auf einem anderem Sever sichern.
Die Datenübertragung von meinem Server zu dem anderen Server geschieeht mittels FTP. Die tägliche automatisierte Sicherung wird durch CRON erreicht, welches folgendes Shell Script ausführt:
#!/bin/sh
DATUM=date '+%Y-%m-%d'
mkdir /var/backup/${DATUM}
mysqldump -uUSERNAME -pPASSWORT -hlocalhost --opt DATENBANKNAME > /var/backup/${DATUM}/DATENBANKNAME.sql
cp -R /home/httpd/vhosts/host1/htdocs /var/backup/${DATUM}
ftp -n SERVER<<*eof
quot user USERNAME
quot pass PASSWORT
mkdir ${DATUM}
cd ${DATUM}
*eof
Mein Problem: Wie kopiere ich ein komplettes lokales Verzeichnis mit allen Unterordnern per FTP?
Mit PUT kann man ja nur einzelne Dateien kopieren?!
Vielen Dank für Euere Hilfe
Maresa P.
Hallo,
Mein Problem: Wie kopiere ich ein komplettes lokales Verzeichnis mit allen Unterordnern per FTP?
Meiner Meinung nach solltest Du auf dem Ausgangsserver das komplette Verzeichnis taren (dann noch evtl. packen: gzip oder bzip2) und dann diesen einen Tarball mit ftp hochladen.
Mit PUT kann man ja nur einzelne Dateien kopieren?!
Es gibt mput bei einigen ftp-Programmen. Welches ftp-Programm benutzt Du?
Eine andere Loesung waere rsync; damit wuerden nur Dateien gesichert, die sich geaendert haetten - allerdings ueberschreibt dass dann u.U. aeltere Sicherungen; Du muesstest Dich also in die rsync-Doku mal einlesen, soweit habe ich das nie gebraucht.
Gruss
Thomas
Hallo,
Hi Thomas!
Meiner Meinung nach solltest Du auf dem Ausgangsserver das komplette Verzeichnis taren (dann noch evtl. packen: gzip oder bzip2) und dann diesen einen Tarball mit ftp hochladen.
Vielen Dank für Deine Hilfe. Ich habe das mal so umgesetzt:
----------------------------------
Datei 'backup', welche per CRON einmal täglich aufgerufen wird:
#!/bin/sh
service httpd stop
DATUM=date '+%Y-%m-%d'
mysqldump -uUSERNAME -pPASSWORD -hlocalhost --opt DATENBANKNAME > /tmp/mt-db1.sql
tar -cf /tmp/mt.tar /home/httpd/vhosts/mt/htdocs /tmp/mt-db1.sql
service httpd start
ftp -n HOSTNAME<<*eof
quot user USERNAME
quot pass PASSWORD
lcd /tmp
put mt.tar
rename mt.tar mt-${DATUM}.tar
bye
*eof
rm -f mt-db1.sql
rm -f mt.tar
-----------------------------
Das Script funktioniert super, der Dump wird erzeugt, der Tarball wird generiert und auch hochgeladen. Lade ich mir jedoch den tarball per FTP runter (GET tarballname.tar) und versuche in auszupacken, bekomme ich folgende Fehlermeldung:
[root@host cron.daily]# tar -xf mt-2004-05-18.tar
tar: Skipping to next header
tar: Archive contains obsolescent base-64 headers
tar: Error exit delayed from previous errors
Fragen:
Vielen Dank!
Maresa
Hallo,
rename mt.tar mt-${DATUM}.tar
Hier eher ein mv; rename ist (zumindest bei mir) ein Perl-Skript.
loeschen des lokalen Tarballs und des MySQL Dumps
rm -f mt-db1.sql
rm -f mt.tar
Bist Du hier in /tmp? Ansonsten absolute Pfade.
[root@host cron.daily]# tar -xf mt-2004-05-18.tar
Was sagt "file mt-2004-05-18.tar"?
Gruss
Thomas
Hallo,
Hi!
rename mt.tar mt-${DATUM}.tar
Hier eher ein mv; rename ist (zumindest bei mir) ein Perl-Skript.
rename ist das FTP Kommando, also hier durchaus richtig.
loeschen des lokalen Tarballs und des MySQL Dumps
rm -f mt-db1.sql
rm -f mt.tar
Bist Du hier in /tmp? Ansonsten absolute Pfade.
hab die Pfade nun absolut angegeben. Die Dateien werden gelöscht.
[root@host cron.daily]# tar -xf mt-2004-05-18.tar
Was sagt "file mt-2004-05-18.tar"?
mt-2004-05-18.tar: GNU tar archive
Gruss
Thomas
lg
Maresa
Hallo,
rename ist das FTP Kommando, also hier durchaus richtig.
Tschuldigung, da hatte ich was verpeilt. Ich dachte, die Ftp-Session waere schon vorbei.
Was sagt "file mt-2004-05-18.tar"?
mt-2004-05-18.tar: GNU tar archive
Schlecht (dann kann es daran wohl nicht liegen). Funktioniert denn Auspacken auf dem Server? Hast Du auf dem entfernten Server die selbe Distri?
Gruss
Thomas
Moin!
Eine andere Loesung waere rsync; damit wuerden nur Dateien gesichert, die sich geaendert haetten - allerdings ueberschreibt dass dann u.U. aeltere Sicherungen; Du muesstest Dich also in die rsync-Doku mal einlesen, soweit habe ich das nie gebraucht.
rdiff-backup wäre dafür die ideale Lösung.
http://rdiff-backup.stanford.edu/
- Sven Rautenberg