db Backup-Script

Lord_Icon

Member
Hi,

ich hab mir ein kleines Backupscript geschrieben, was anfür sich auch sauber arbeitet.

Allerdings würde ich gern 2 Befehle zusammenführen um Speicherplatz zu sparen.
Leider gelingt mir das nicht.

Hier jetzt erstmal der funktionierende Code:
Code:
       mysqldump --opt -p123test $x >$x.sql;
       tar cfvz $6.$3.$2_$x.tar.gz $x.sql > /dev/null 2>&1;

Wie man sieht, mache ich ein sqldump und schreibe das in die entsprechende SQL-datenbank-datei. ($x.sql).
Bei einigen DB's sind diese aber mehrere hunderte von MB groß, sodass ich immer recht nahe am HDD-Limit bin.
Danach wird die sql-Datei gepackt und wieder gelöscht.

Nur... kann ich den mysqldump-strem nicht gleich an tar weitergeben ?

Vielen Dank
 
Stichwort: Pipe
Code:
mysqldump -uUser -pPass $db | bzip2 > $db.bz2
Oder mit tar:
Code:
mysqldump -uUser -pPass $db | tar -czf $db.tar.gz -
 
Last edited by a moderator:
Stichwort: Pipe
Oder mit tar:
Code:
mysqldump -uUser -pPass $db | tar -czf $db.tar.gz -

Das hatte ich schon versucht:
Code:
mysqldump --opt -p123test $x | tar cfvz $6.$3.$2_$x.tar.gz;
Nur bekomme ich da eine Fehlermeldung zurück:
saving database: web123db5
tar: Anlegen eines leeren Archivs wird feige verweigert.
»tar --help« oder »tar --usage« gibt weitere Informationen.

leeres Archiv = okay. tar erwartet ja eigendlich an 2ter Stelle die Datei, die gepackt werden soll. Aber die übergebe ich ja per Pipe vom vorherigen Befehl

P.s. tar wird ohne - ausgeführt. Dies verursacht Fehler (cfvz vs. -cfvz) ;)
 
Kleiner Hektik-Bug meinerseits:
Code:
mysqldump ... | tar cz -T - -f db.tar.gz

Uff... wenn das funktioniert htte, hätte ich mich erstmal einlesen müssen.
-nichts ? ... schon mal ein merkwürdige Anweisung.

Aber erstmal egal. Habe natürlich auch diesen Befehl getestet:
saving database: web123db2
tar: Unbekannte Option »-- MySQL dump 10.11«
»tar --help« oder »tar --usage« gibt weitere Informationen.

So sieht mitunter aus:
Code:
   for x in `cat $DBASELIST`; do
       echo "    saving database: $x";
       mysqldump --opt -p123test $x | tar cz -T - -f $6.$3.$2_$x.tar.gz;
...
 
Last edited by a moderator:
Das liegt aber nicht an den Optionen für tar, sondern am Output von mysqldump.
Du solltest die bzip2-Variante aus meinem ersten Post verwenden, zumal tar für einzelne Files ohnehin überflüssig ist.
 
Wofür brauchst Du eigentlich tar, wenn Du nur jeweils nur ein File schreibst bzw. eine Datenbank dumpst?

Warum nicht einfach
Code:
mysqldump --opt -p123test $x | gzip > $6.$3.$2_$x.gz

?
 
ICh dumpe ja nicht nur eine sondern sondern mehrere.
Das ganze liegt in einer Schleife um später separten Datei (Datenbankbackup)-zugriff haben möchte.

tar ist beim packen immer meine erste Wahl. Vermutlich aus gewohnheit.
Bin aktuell davon ausgegangen, das tar ne bessere Packrate kann.
Aber da wurde ich gerade eines besseren belehrt :-(

*.tar.gz => 221MB (mein Befehl)
*.bz2 => 159MB (der von Joe User)

Ergo: Nehm ich den von Joe und erpsare mir sogar einiges an Traffic ;-)

Habt Dank !!!
 
ICh dumpe ja nicht nur eine sondern sondern mehrere.
Das ganze liegt in einer Schleife um später separten Datei (Datenbankbackup)-zugriff haben möchte.

Du hast alles in einzelnen Files, wenn Du

Code:
for x in `cat $DBASELIST`; do
... 
$6.$3.$2_$x.tar.gz;

nimmst, da sich $x bei jedem Lauf ändert. Oder stehe gerade völlig neben mir?
 
Back
Top