Benutzer-Werkzeuge

Webseiten-Werkzeuge


server:ftplicity

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
server:ftplicity [2010/02/13 21:23]
ewald
server:ftplicity [2011/11/09 17:52] (aktuell)
ewald Option --single-transaction beim mysqldump-Aufruf
Zeile 1: Zeile 1:
 +====== Verschlüsseltes Backup mit ftplicity ======
 +
 +''​ftplicity''​ ist ein Wrapper-Skript um ''​duplicity'',​ das inkrementelle Backups durchführt,​ die per GPG verschlüsselt werden.
 +
 +Das Backup wird per ''​scp''​ auf den Hidrive-Plattenplatz kopiert.
 +
 +===== Quellen =====
 +
 +  * http://​www.howtoforge.com/​ftp-backups-with-duplicity-ftplicity-debian-etch
 +  * http://​www.h-online.com/​security/​features/​Backups-on-non-trusted-FTP-servers-747191.html
 +
 +===== Installation =====
 +
   * ''​duplicity''​ installieren:​   * ''​duplicity''​ installieren:​
  
   # 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 13: Zeile 26:
     mkdir "​$CONFDIR"​ || error "​Konnte $CONFDIR nicht erstellen."​     mkdir "​$CONFDIR"​ || error "​Konnte $CONFDIR nicht erstellen."​
     save_config     save_config
 +
 +  * 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/​sbin/​ftplicity
 +  [...]
 +          $DUPLICITY $cmd "​$@"​ --encrypt-key $GPG_KEY \
 +             ​--sign-key $GPG_KEY --verbosity $VERBOSITY \
 +             ​--ssh-askpass
 +
 +===== GPG =====
  
   * GPG-Schlüssel erzeugen (als "​richtiger"​ root per "su -"):   * GPG-Schlüssel erzeugen (als "​richtiger"​ root per "su -"):
  
   # gpg –-gen-key   # gpg –-gen-key
 +
 +===== Konfiguration =====
  
   * ''​ftplicity''​ aufrufen, um die Konfigurationsdatei zu erzeugen:   * ''​ftplicity''​ aufrufen, um die Konfigurationsdatei zu erzeugen:
Zeile 29: Zeile 54:
   GPG_PW='​...'​   GPG_PW='​...'​
   [...]   [...]
-  TARGET='​file:///private-backup/backup/tiger.disorganized.de/'​ +  TARGET='​scp://username@scp.hidrive.strato.com//​users/​username/backup/xxx.disorganized.de/'​ 
-  TARGET_PW='​x'+  TARGET_PW='​...'
   [...]   [...]
   MAXIMUM_AGE=1M   MAXIMUM_AGE=1M
  
   * Folgende Dateien steuern den Ablauf von ''​ftplicity'';​   * Folgende Dateien steuern den Ablauf von ''​ftplicity'';​
-    * /​root/​.ftplicity/​exclude:​ Liste von Verzeichnissen und Dateimustern,​ die nicht gesichert werden sollen (rsync-Syntax) +    * ''​/​root/​.ftplicity/​exclude''​: Liste von Verzeichnissen und Dateimustern,​ die nicht gesichert werden sollen (rsync-Syntax) 
-    * /​root/​.ftplicity/​pre:​ Kommandos, die vor dem Backup ausgeführt werden sollen +    * ''​/​root/​.ftplicity/​pre''​: Kommandos, die vor dem Backup ausgeführt werden sollen 
-    * /​root/​.ftplicity/​post:​ Kommandos, die nach dem Backup ausgeführt werden sollen+    * ''​/​root/​.ftplicity/​post''​: Kommandos, die nach dem Backup ausgeführt werden sollen
  
   * Exclude-Datei anlegen (nur nicht wieder herstellbare Dateien sichern, nicht das ganze Betriebssystem):​   * Exclude-Datei anlegen (nur nicht wieder herstellbare Dateien sichern, nicht das ganze Betriebssystem):​
Zeile 68: Zeile 93:
   /var/tmp   /var/tmp
  
 +===== Erste Sicherung und Test =====
 +
 +  * Erste Vollsicherung durchführen:​
 +
 +  # ftplicity full
 +  [...]
 +  Errors 0
 +
 +  * Restore testen:
 +
 +  # ftplicity fetch etc/passwd /tmp/passwd
 +
 +===== Cron-Job =====
 +
 +  * Cron-Job einrichten:
 +
 +  # crontab -e
 +  # m h  dom mon dow   ​command
 +  ​
 +  # Inkrementelles Backup um 5 Uhr morgens
 +  00 5 * * * /​usr/​local/​sbin/​ftplicity backup
 +  ​
 +  # Vollbackup um 6 Uhr morgens an jedem ersten des Monats,
 +  # veraltete Ketten loeschen
 +  # Kommandos sollten eigentlich mit && verkettet werden!
 +  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 =====
  
   * Nachfolge-Projekt:​ [[http://​duply.net/​|duply]]   * Nachfolge-Projekt:​ [[http://​duply.net/​|duply]]
server/ftplicity.1266092621.txt.gz · Zuletzt geändert: 2010/02/13 21:23 von ewald