NEWS
Borg Backup
-
Hallo zusammen,
hat jemand von euch mal borg ausprobiert?
Das kann die Daten per SSH auf einen anderen Rechner kopieren. Währenddessen werden die Daten komprimiert und nur wirklich geänderte Daten übertragen. Im Gegensatz zu klassischen Lösungen wird nicht zwischen vollständigen, differenziellen und inkrementellen Backups unterschieden, es wird ein forever incremental Ansatz genutzt. Man startet es per Kommandozeile und gibt alle benötigten Parameter dort an. Auf meinen Rechner wird es mit einem Skript und einem cronjob gestartet.
Um die Daten wiederherzustellen gibt esextract
mit dem man die Daten in ein vorhandeses Dateisystem wiederherstellen kann odermount
mit dem man die Daten per FUSE einhängen kann.Auf meinem Solaris NAS hat das erste Backup 7 Tage gedauert, aber sowohl das NAS als auch der Raspberry 4 sind nicht besonders rechenstark. Mein ioBroker-Pi braucht zwischen 2 und 10 Minuten, je nachdem, wieviele Änderungen es gab. Dazu muss man aber auch beachten, daß der Backup Pi nach dem ersten befüllen vom Schwarzwald nach Berlin umgezogen ist, damit ich eine räumliche Trennung habe. Die Verbindung läuft über OpenVPN und SSH. Wenn man diese Möglichkeit nicht hat reicht ein Server, auf dem SSH und
borg
laufen, der muss nicht einmal besonders vertrauenswürdig sein, die Backups werden vor der Übertragung verschlüsselt.Viele Grüße
P.S.: Das normale BackItUp Backup läuft natürlich auch, das wird dann von den Borg assimiliert.
#!/bin/sh # Setting this, so the repo does not need to be given on the commandline: export BORG_REPO='backupuser'@'backuphost':/backups/`cat /etc/hostname` # See the section "Passphrase notes" for more infos. export BORG_PASSPHRASE='Hier koennt Ihr Passwort stehen, am besten lang und zufaellig...' # some helpers and error handling: info() { printf "\n%s %s\n\n" "$( date )" "$*" >&2; } trap 'echo $( date ) Backup interrupted >&2; exit 2' INT TERM info "Starting backup" # Backup the most important directories into an archive named after # the machine this script is currently running on: # Hier werden z.B. Datenbanken gedumpt und apt-clone erstellt eine Sicherung. /usr/local/bin/backupdumps.sh borg create \ --verbose \ --filter AME \ --list \ --stats \ --show-rc \ --compression lz4 \ --exclude-caches \ --exclude '/home/*/.cache/*' \ --exclude '/root/.cache' \ --exclude '/var/cache/*' \ --exclude '/var/tmp/*' \ --exclude '/dev' \ --exclude '/proc' \ --exclude '/var/run' \ --exclude '/run' \ --exclude '/lost+found' \ --exclude '/var/log' \ --exclude '/tmp' \ \ ::'{hostname}-{now}' \ /etc \ /home \ /root \ /var \ /usr/local \ /opt \ backup_exit=$? info "Pruning repository" # Use the `prune` subcommand to maintain 7 daily, 4 weekly and 6 monthly # archives of THIS machine. The '{hostname}-' prefix is very important to # limit prune's operation to this machine's archives and not apply to # other machines' archives also: borg prune \ --list \ --prefix '{hostname}-' \ --show-rc \ --keep-daily 7 \ --keep-weekly 4 \ --keep-monthly 6 \ prune_exit=$? # use highest exit code as global exit code global_exit=$(( backup_exit > prune_exit ? backup_exit : prune_exit )) if [ ${global_exit} -eq 0 ]; then info "Backup and Prune finished successfully" elif [ ${global_exit} -eq 1 ]; then info "Backup and/or Prune finished with warnings" else info "Backup and/or Prune finished with errors" fi exit ${global_exit}