Ich verwende rsnapshot (was ja auf rsync aufsetzt, also vielleicht brauchst du letzteres dann gar nicht selbst aufrufen) für Dateien. Das geht auch als Backup eines anderen Servers, also würde ich die Backups nicht auf einen anderen Server kopieren, sondern dort auch rsnapshot einrichten und die Dateien über SSH kopieren lassen. Das hat den Vorteil, dass du auch dort von den Hardlinks profitierst, die rsnapshot anlegt, und somit viel Speicherplatz sparst.
Für MySQL habe ich mir selbst ein Skript geschrieben, das ich per Cronjob ausführen lasse:
#!/bin/sh
USER=root
PASS=ROOT_PASSWORD
TARGET=/backup/mysql/
DATE=`date +%Y%m%d_%H%M%S`
cd $TARGET
if [ -d tmp ]; then
rm -R ./tmp
fi
mkdir tmp
cd tmp
for i in `echo "SHOW DATABASES;" | mysql -u${USER} -p${PASS}`
do
if [ $i == 'Database' ]; then
continue;
fi
mysqldump -u$USER -p$PASS "$i" > ${i}.sql
done
tar czf ../mysql_${DATE}.tar.gz *
cd ..
rm -R ./tmp
Alles anzeigen
Das dumpt alle Datenbanken jeweils in eine Datei. Diese Dateien werden dann in ein Archiv gepackt und mit dem Datum im Dateinamen gespeichert. Eine Funktion zum Löschen alter Backups sollte mit einem find-Befehl schnell nachzurüsten sein.. wobei es eigentlich noch sinnvoller wäre, das gleich in rsnapshot einzubinden, da kann man ja auch Skripte aufrufen lassen und das Ergebnis sichern. Muss ich mir bei Gelegenheit mal ansehen.