Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
|
server:ftplicity [2010/02/14 11:54] ewald Backup-Ziel ist Hidrive |
server:ftplicity [2011/11/09 17:52] (aktuell) ewald Option --single-transaction beim mysqldump-Aufruf |
||
|---|---|---|---|
| Zeile 16: | Zeile 16: | ||
| # aptitude install duplicity | # aptitude install duplicity | ||
| - | * [[ftp://ftp.heise.de/pub/ct/listings/0613-216.tar.gz|ftplicity]] laden, entpacken und ''ftplicity'' nach ''/usr/local/bin'' kopieren | + | * [[ftp://ftp.heise.de/pub/ct/listings/0613-216.tar.gz|ftplicity]] laden, entpacken und ''ftplicity'' nach ''/usr/local/sbin'' kopieren |
| * ''ftplicity'' legt beim ersten Aufruf nicht das Konfigurationsverzeichnis ''/root/.ftplicity'' an, deshalb vor dem Aufruf von ''save_config'' folgende Zeile einfügen: | * ''ftplicity'' legt beim ersten Aufruf nicht das Konfigurationsverzeichnis ''/root/.ftplicity'' an, deshalb vor dem Aufruf von ''save_config'' folgende Zeile einfügen: | ||
| - | # vi /usr/local/bin/ftplicity | + | # vi /usr/local/sbin/ftplicity |
| [...] | [...] | ||
| if [ ! -d "$CONFDIR" ] | if [ ! -d "$CONFDIR" ] | ||
| Zeile 29: | Zeile 29: | ||
| * Damit bei Verwendung von ''scp'' das Kennwort aus der Umgebungsvariablen ''FTP_PASSWORD'' zur Authentifizierung dient (und nicht, wie es eigentlich besser wäre, ein SSH-Key), muss beim Aufruf von ''duplicity'' noch die Option ''--ssh-askpass'' hinzugefügt werden: | * Damit bei Verwendung von ''scp'' das Kennwort aus der Umgebungsvariablen ''FTP_PASSWORD'' zur Authentifizierung dient (und nicht, wie es eigentlich besser wäre, ein SSH-Key), muss beim Aufruf von ''duplicity'' noch die Option ''--ssh-askpass'' hinzugefügt werden: | ||
| - | # vi /usr/local/bin/ftplicity | + | # vi /usr/local/sbin/ftplicity |
| [...] | [...] | ||
| $DUPLICITY $cmd "$@" --encrypt-key $GPG_KEY \ | $DUPLICITY $cmd "$@" --encrypt-key $GPG_KEY \ | ||
| Zeile 113: | Zeile 113: | ||
| | | ||
| # Inkrementelles Backup um 5 Uhr morgens | # Inkrementelles Backup um 5 Uhr morgens | ||
| - | 00 5 * * * /usr/local/bin/ftplicity backup | + | 00 5 * * * /usr/local/sbin/ftplicity backup |
| | | ||
| # Vollbackup um 6 Uhr morgens an jedem ersten des Monats, | # Vollbackup um 6 Uhr morgens an jedem ersten des Monats, | ||
| # veraltete Ketten loeschen | # veraltete Ketten loeschen | ||
| # Kommandos sollten eigentlich mit && verkettet werden! | # Kommandos sollten eigentlich mit && verkettet werden! | ||
| - | 00 6 1 * * /usr/local/bin/ftplicity full ; /usr/local/bin/ftplicity purge --force | + | 00 6 1 * * /usr/local/sbin/ftplicity full ; /usr/local/sbin/ftplicity purge --force |
| + | |||
| + | ===== MySQL-Backup ===== | ||
| + | |||
| + | Das MySQL-Backup wird von ''ftplicity'' per ''pre''-Kommando durchgeführt. Dabei werden mit ''mysqldump'' Dumps aller Datenbanken angelegt. | ||
| + | |||
| + | * MySQL-Backup-Benutzer anlegen: | ||
| + | |||
| + | $ mysql -u root -p | ||
| + | GRANT SHOW DATABASES, SHOW VIEW, SELECT, LOCK TABLES, RELOAD ON *.* to 'backup'@'localhost' IDENTIFIED BY 'password'; | ||
| + | FLUSH PRIVILEGES; | ||
| + | |||
| + | * MySQL-Backup-Verzeichnis anlegen: | ||
| + | |||
| + | # mkdir /var/backups/mysql | ||
| + | # chown root:root /var/backups/mysql | ||
| + | # chmod 750 /var/backups/mysql | ||
| + | |||
| + | * MySQL-Backup-Skript anlegen: | ||
| + | |||
| + | # vi /usr/local/sbin/mysqlbackup | ||
| + | #!/bin/bash | ||
| + | |||
| + | set -e | ||
| + | |||
| + | DIR=/var/backups/mysql/ | ||
| + | DB_USER=backup | ||
| + | DB_PASS='password' | ||
| + | |||
| + | OPT="--opt --single-transaction --quote-names --routines --flush-logs --allow-keywords" | ||
| + | |||
| + | # create backups securely | ||
| + | umask 0027 | ||
| + | |||
| + | # list MySQL databases and dump each | ||
| + | DB_LIST=`mysql -u $DB_USER -p"$DB_PASS" -e'show databases;'` | ||
| + | DB_LIST=${DB_LIST##Database} | ||
| + | for DB in $DB_LIST; | ||
| + | do | ||
| + | FILENAME=${DIR}${DB}.sql.bz2 | ||
| + | mysqldump -u $DB_USER -p"$DB_PASS" $OPT $DB | bzip2 > $FILENAME.tmp | ||
| + | mv $FILENAME.tmp $FILENAME | ||
| + | done | ||
| + | |||
| + | * Zugriffsrechte für MySQL-Backup-Skript setzen: | ||
| + | |||
| + | # chown root:root /usr/local/sbin/mysqlbackup | ||
| + | # chmod 700 /usr/local/sbin/mysqlbackup | ||
| + | |||
| + | * MySQL-Backup-Skript vor dem Backup ausführen: | ||
| + | |||
| + | # vi /root/.ftplicity/pre | ||
| + | #!/bin/bash | ||
| + | |||
| + | /usr/local/sbin/mysqlbackup | ||
| + | |||
| + | * Zugriffsrechte für ''pre''-Kommando setzen: | ||
| + | |||
| + | # chmod 700 /root/.ftplicity/pre | ||
| ===== Ausblick ===== | ===== Ausblick ===== | ||
| * Nachfolge-Projekt: [[http://duply.net/|duply]] | * Nachfolge-Projekt: [[http://duply.net/|duply]] | ||