Benutzer-Werkzeuge

Webseiten-Werkzeuge


server:duply

Verschlüsseltes Backup mit duply

duply ist ein Wrapper-Skript um duplicity, das inkrementelle Backups durchführt, die per GPG verschlüsselt werden.

Das Backup wird per scp auf den Strato-Hidrive-Plattenplatz kopiert.

Quellen

Installation

  • duply installieren:
# aptitude install duply python-pexpect

GPG

  • GPG-Schlüssel erzeugen (als „richtiger“ root per „su -“):
# gpg --gen-key

Konfiguration

  • Konfiguration erzeugen:
# duply hidrive create
  • Konfigurationsdatei anpassen:
# vi /root/.duply/hidrive/conf
[...]
GPG_KEY='...'
GPG_PW='...'
[...]
TARGET='scp://username@scp.hidrive.strato.com//users/username/backup/xxx.disorganized.de/'
TARGET_PW='...'
[...]
SOURCE='/'
  • Folgende Dateien steuern den Ablauf von duply;
    • /root/.duply/hidrive/exclude: Liste von Verzeichnissen und Dateimustern, die nicht gesichert werden sollen (rsync-Syntax)
    • /root/.duply/hidrive/pre: Kommandos, die vor dem Backup ausgeführt werden sollen
    • /root/.duply/hidrive/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/.duply/hidrive/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
  • Das Zielverzeichnis muss auf Hidrive existieren, sonst gibt es eine irreführende Fehlermeldung (Invalid SSH password).
  • Erste Verbindung zu Hidrive per sftp herstellen, damit Host in die known_hosts-Datei aufgenommen wird (sonst meldet duply einen Verbindungsfehler):
# sftp username@scp.hidrive.strato.com

Erste Sicherung und Test

  • Erste Vollsicherung durchführen:
# duply hidrive full
[...]
Errors 0
  • Restore testen (kein führender / beim Quellpfad):
# duply hidrive fetch etc/passwd /tmp/passwd

Cron-Job

  • Cron-Job einrichten:
# crontab -e
# m h  dom mon dow   command

# Inkrementelles Backup um 5:01 Uhr morgens
01 5 * * * /usr/bin/duply hidrive backup_cleanup --force

# Vollbackup um 6:01 Uhr morgens an jedem ersten des Monats,
# veraltete Ketten loeschen
01 6 1 * * /usr/bin/duply hidrive full_purge_cleanup --force

MySQL-Backup

Das MySQL-Backup wird von duply 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, PROCESS ON *.* to 'backup'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
  • MySQL-Backup-Verzeichnis anlegen:
# mkdir /var/backups/mysql
# chown root:root /var/backups/mysql
# chmod 700 /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='...'

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/.duply/hidrive/pre
#!/bin/bash

/usr/local/sbin/mysqlbackup
  • Zugriffsrechte für pre-Kommando setzen:
# chmod 700 /root/.ftplicity/pre
server/duply.txt · Zuletzt geändert: 2017/02/13 21:59 von ewald