• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

backup Script

GMastaP

Member
und da ein Backup die Lebensrettng eines jeden Admins ist poste ich auch mal mein Script hier:

Dieses Script dient zum sichern aller Verzeichnisse, die in der /etc/backup.cfg eingetragen sind.

Ich muss erwähnen, dass es mir ausreicht die kompletten Verzeichnisse zu sichern.

eine Routeine für Unterverzeichnisse ist noch nicht implementiert

Der Clou ist jedoch, das alle Mysql Datenbanken gesichert werden, wenn ein Backup Benutzer vorhanden ist.
Ich muss nachher nochmal schauen welche Rechte der hat.

Code:
#/bin/bash
#
# Script von GMastaP für den http://www.linux-club.de
#

# Varibelen
BACKUP_DIR=${1:-/bckp} #Directory fuer Backups hier /bckp
BACKUP_FILE=`cat  /etc/backup.cfg` #das config-file für die zu sichernden Verzeichnisse
EXPIRETIME=5                            #Aufbewahrungsdauer
DATE=`date "+%Y%m%d"` #Datum zur Namensbenennung

# MySQL Backups erstellen
for i in /var/lib/mysql/*/; do
        dbname=`basename "$i"`
        mysqldump $dbname --user=backup --password="bckp123" | gzip > $BACKUP_DIR/mysql/$dbname.$DATE.gz
done

# Backup der Verzeichnisse
for j in $BACKUP_FILE
  do
#       echo $j
        tar zcvf $BACKUP_DIR/$j.$DATE.tgz /$j > /dev/null  2>&1
done

# Alte Backups löschen
find $BACKUP_DIR -mtime +${EXPIRETIME} -exec rm {} \;
find $BACKUP_DIR/mysql -mtime +${EXPIRETIME} -exec rm {} \;

eine Unterroutine für die Übertragung der Files auf nen 2ten computer wird noch folgen.
Werde hierfür eine ssh-Übertragung mit sich vertrauenden Schlüsseln verwenden


Hier was in meiner /etc/backup.cfg steht
für weitere Verzeichniss die im root liegen einfach
in einer neuen Zeile schreiben

# cat /etc/backup.cfg
 

admine

Ultimate Guru
Das erinnert mich daran:
https://adminloesungen.ott-service.de/tikiwiki/tiki-index.php?page=s4fbackup
;)
 

Remad

Member
Daraufhin erhalte ich bei SuSe 9.3 webserver diese Meldung:
mysqldump: Got error: 1044: Access denied for user 'backup'@'localhost' to database 'confixx' when selecting the database
mysqldump: Got error: 1044: Access denied for user 'backup'@'localhost' to database 'mysql' when selecting the database
mysqldump: Got error: 1044: Access denied for user 'backup'@'localhost' to database 'usr_web1_1' when selecting the database

Wie mache ich es korrekt?
Schon gelöst, in dem ich Änderungen in den Hosts von MySQL vornahm.
 

TomcatMJ

Guru
Du solltest dem Backup-Benutzer auch die passenden Rechte für die Datenbank zuweisen (z.B. per phpMyAdmin oder ähnlichem wenn du nicht auf der Kommandozeile hantieren willst), denn wenn er nicht drauf zugreifen darf kann er auch nicht auslesen was es zu sichern gäbe ;)

Bis denne,
Tom
 

Leviathan

Hacker
Ich backuppe so:
Code:
PASSWD="dbpass"

# lösche alle alten SQL Dumps
find . -type f -mtime +3 -iname "*.sql*" -print0 | xargs -0 rm

# nachsehen welche Dirs in mysql liegen. Schleife geht davon aus, dass # jedes Verz. in data/ eine eigene DB ist

for db in `find /usr/local/mysql/data -type d  |cut -d/ -f6|sort -u`; do  mkdir -p dump.$db/ ; for i in `echo "show tables"|/usr/local/mysql/bin/mysql -u root  --password=$PASSWD $db`; do /usr/local/mysql/bin/mysqldump -Q --add-drop-table --quick  --default-character-set=latin1 --add-locks -u root --password=$PASSWD $db $i > dump.$db/$db.$i; done; done
Das script hat den Vorteil, dass jede DB einzeln gebackupped wird und nicht als dickes monolithes Gebilde.SQL. Man kann so bei Bedarf recht schnell einzelne Tabellen restoren.

Gruß Dominik
 

admine

Ultimate Guru
@Remad
Hast du auch alles korrekt in /etc/s4fbackup.conf eingestellt?


Hier im Übrigen der neue Link zu s4fbackup:
https://adminloesungen.ott-service.de/tiki-index.php?page=s4fbackup
 
Oben