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:22]
ewald Steuerdateien beschrieben
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''​ beim ersten Aufruf nicht das Konfigurationsverzeichnis ''/​root/​.ftplicity'',​ 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"​ ]
   then   then
Zeile 13: Zeile 27:
     save_config     save_config
  
-  * GPG-Schlüssel erzeugen (als "​richtiger"​ root per ''​su -''​):+  ​* 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 –-gen-key   # gpg –-gen-key
  
-  ​* ''​ftplicity''​ aufrufen, um Konfigurationsdatei zu erzeugen:+===== Konfiguration ===== 
 + 
 +  ​* ''​ftplicity''​ aufrufen, um die Konfigurationsdatei zu erzeugen:
  
   # ftplicity   # ftplicity
Zeile 28: 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 67: 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.1266092526.txt.gz · Zuletzt geändert: 2010/02/13 21:22 von ewald