Wie automatisiere ich das borg-Backup?

691
sgbrown

Hintergrund

Ich möchte Borg Backup als Sicherungslösung für meinen Ubuntu-Server verwenden. Sie bieten ein sehr praktisches Skript an, das besagt, dass Sie einfach als Cron-Job laufen können, aber es funktioniert nicht für mich.

Problem

Wie automatisiere ich das borg-Backup? Wenn der beste Weg ist, cron zu verwenden, was ist dann falsch an meiner Anwendung?

Daten

Wurzelcrontab:

# 5 2 * * * sh /home/***/Scripts/borgBackup_run.sh >/dev/null # Back up the root partition daily (2:05a) * * * * * sh /home/***/Scripts/borgBackup_run.sh >/dev/null # Test the script 

borgBackup_run.sh:

Vom Original so modifiziert, dass es sehr nackt ist:

#!/bin/sh  echo 'Starting backup now...' >>  /home/***/Logs/borgBackup_create.log  #/usr/bin/borg create --verbose --filter AME --list --stats --show-rc --compression lz4 --exclude-caches --one-file-system --exclude-from ~/Scripts/borgBackup_exclude.txt /mnt/RootBackup/borg::'-' / /usr/bin/borg create /mnt/RootBackup/borg::cronTest /home/***/Logs/ # Backup a small folder as a test  echo 'Done.' >> /home/***/Logs/borgBackup_create.log 

"ls -l ~ / Scripts / borgBackup_run.sh"

-rwxr-xr-x 1 root root 455 Sep 27 12:34 Scripts/borgBackup_run.sh 

Anmerkungen:

Wenn borgBackup_run.shvon der Befehlszeile aus Folgendes ausgeführt wird: sudo Scripts/borgBackup_run.shDas Skript funktioniert einwandfrei und erstellt ein neues Archiv in /mnt/RootBackup/borg.

Darüber hinaus /home/***/Logs/borgBackup_create.logzeigt die .log-Datei nach jeder Minute (wenn der Cronjob ausgeführt wird) sowohl Starting backup now...und als auch Done., was darauf hinweist, dass das Skript vollständig ausgeführt wurde, aber Borg aus irgendeinem Grund nicht funktionierte.

Ich habe versucht, das Entfernen shvon der crontab - Datei, indem bashstatt und zum Ändern des interrobang zu #!/bin/bashstatt #!/bin/sh. Ich habe auch versucht, die /user/bin/borg create ...Zeile in borgBackup_run.sheinzubinden bash -c "...".

Jede Hilfe wäre sehr dankbar!

1
Und was sagt Borg selbst? Ich sehe, Sie haben Optionen wie "--verbose" und "--stats" ausprobiert. Sicherlich geht der stdout / stderr irgendwo hin; entweder in das E-Mail-Postfach von root oder in das lokale Postfach / var / spool / mail / root oder zumindest in syslog. grawity vor 6 Jahren 2
Ändern Sie das Ende des crontab-Eintrags von '> / dev / null' in '/ pfad / in / somewhere / cron_output 2> & 1' und prüfen Sie, ob Sie etwas Sinnvolles in dieser Datei erkennen. Auch die Zeile / usr / bin / borg ..... des Skripts scheint die Ausgabe nicht in Ihre .log-Datei umzuleiten. Derzeit wird die Ausgabe an / dev / null gesendet Tyson vor 6 Jahren 2
Vielen Dank für beide Kommentare! @ grawity: Ich hatte zuvor das stdout von borg auf dieselbe `borgBackup_create.log'-Datei verwiesen, allerdings werde ich auch versuchen, strerr umzuleiten. sgbrown vor 6 Jahren 0
@Tyson: Ich hatte das stdout und das stderr des Skripts in der Cron-Datei zuvor zu einem Protokoll geleitet. Es erstellt die .log-Datei, fügt jedoch keinen Inhalt hinzu. sgbrown vor 6 Jahren 0
Ich möchte nur vorschlagen, was ich in der Vergangenheit getan habe, um Cron-Probleme zu lösen. In einem Fall wurde ein Tippfehler nicht offensichtlich, bis ich mit dem Ausschalten von stdout und errout auf cron-Ebene aufhörte. Tyson vor 6 Jahren 0
Wie sich herausstellt, habe ich keine Ahnung, was ich mache, und hatte versucht, stdout und stderr falsch umzuleiten (ich dachte, dass `&>` beide aus irgendeinem Grund umleiten würde). Nach weiteren Tests stellte sich heraus, dass "Borg" versucht hat, im interaktiven Modus zu laufen. Danke euch beiden! sgbrown vor 6 Jahren 0

1 Antwort auf die Frage

1
sgbrown

Ich habe das Problem herausgefunden und poste die Lösung, falls jemand in der Zukunft ein ähnliches Problem hat.

Ich habe mein Repository so eingerichtet, dass es unverschlüsselt ist, wodurch borgversucht wurde, interaktiv auszuführen (stdout wird gefragt, ob die Sicherung in einem unverschlüsselten Repository in Ordnung ist). Um Borg nicht interaktiv ausführen zu lassen, musste ich borgBackup_run.shvor dem Anruf einen "automatischen Antworter" in exportieren borg create .... Die neue Zeile im Skript sieht folgendermaßen aus:

export BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK=yes 

Der Name dieser Variablen wurde auf der manSeite für gefunden borg. Eine Reihe weiterer "automatischer Antworter" befindet sich ebenfalls auf der manSeite, um sicherzustellen, dass borg in einem Skript nicht interaktiv ausgeführt wird.