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:08]
ewald Konfigurationsverzeichnis anlegen
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
  
-  * Verzeichnis ​für Konfiguration ​anlegen:+===== Konfiguration ===== 
 + 
 +  * ''​ftplicity''​ aufrufen, um die Konfigurationsdatei zu erzeugen: 
 + 
 +  # ftplicity 
 + 
 +  * Konfigurationsdatei anpassen: 
 + 
 +  # vi /​root/​.ftplicity/​conf 
 +  [...] 
 +  GPG_KEY=... 
 +  GPG_PW='​...'​ 
 +  [...] 
 +  TARGET='​scp://​username@scp.hidrive.strato.com//​users/​username/​backup/​xxx.disorganized.de/'​ 
 +  TARGET_PW='​...'​ 
 +  [...] 
 +  MAXIMUM_AGE=1M 
 + 
 +  * Folgende Dateien steuern den Ablauf von ''​ftplicity'';​ 
 +    * ''/​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/​post'':​ Kommandos, die nach dem Backup ausgeführt werden sollen 
 + 
 +  * Exclude-Datei anlegen (nur nicht wieder herstellbare Dateien sichern, nicht das ganze Betriebssystem):​ 
 + 
 +  # vi /​root/​.ftplicity/​exclude 
 +  **/*~ 
 +  **/core 
 +  **/​lost+found 
 +  /​aquota.group 
 +  /​aquota.user 
 +  /bin 
 +  /boot 
 +  /dev 
 +  /initrd 
 +  /lib 
 +  /media 
 +  /mnt 
 +  /opt 
 +  /​private-backup 
 +  /proc 
 +  /sbin 
 +  /srv 
 +  /sys 
 +  /tmp 
 +  /usr 
 +  /​var/​cache 
 +  /​var/​lib/​named/​dev/​* 
 +  /var/lock 
 +  /var/run 
 +  /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:
  
-  # mkdir /​root/​.ftplicity+  # chmod 700 /​root/​.ftplicity/pre
  
 +===== Ausblick =====
  
   * Nachfolge-Projekt:​ [[http://​duply.net/​|duply]]   * Nachfolge-Projekt:​ [[http://​duply.net/​|duply]]
server/ftplicity.1266091686.txt.gz · Zuletzt geändert: 2010/02/13 21:08 von ewald