open:it:backup
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
open:it:backup [2024/07/28 11:20] – [Backup automatisieren] Kai | open:it:backup [2025/05/13 09:28] (aktuell) – Kai | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Backup ====== | ====== Backup ====== | ||
- | Hier werden zwei unterschiedliche Konzepte | + | Hier werden zwei unterschiedliche Konzepte |
- | BorgBackup ist eine OSS Lösung, die sehr gut funktioniert und zum Beispiel eine Remote-Storagebox (hier von Hetzner) als Speichermedium nutzen | + | BorgBackup ist eine einfache |
- | Neben Borg wird ein mit eigenen Scripten erstelltes Backup vorgestellt, | + | Neben Borg wird ein mit eigenen Scripten erstelltes Backup vorgestellt, |
===== BorgBackup ===== | ===== BorgBackup ===== | ||
- | [[https:// | + | ++++ Quellen: | |
- | Die Deduplizierung sorgt bei Borg Backups für einen sehr effizienten Speicherverbrauch und hohe Geschwindigkeit. \\ | + | |
- | + | ||
- | Quellen & Tutorials: | + | |
* [[https:// | * [[https:// | ||
* [[https:// | * [[https:// | ||
* [[https:// | * [[https:// | ||
+ | ++++ | ||
+ | [[https:// | ||
+ | Die Deduplizierung sorgt bei Borg Backups für einen sehr effizienten Speicherverbrauch und hohe Geschwindigkeit. \\ | ||
+ | |||
Bei diesem Beispiel wurde ein externe Storage-Box von Hetzner eingesetzt (your-storagebox.de). Der User u123456 muss entsprechend Vorgaben der Storage-Box angepasst werden. \\ | Bei diesem Beispiel wurde ein externe Storage-Box von Hetzner eingesetzt (your-storagebox.de). Der User u123456 muss entsprechend Vorgaben der Storage-Box angepasst werden. \\ | ||
Soll das Backup auf einem lokalen Laufwerk oder Verzeichnis gesichert werden, ist der Pfad: | Soll das Backup auf einem lokalen Laufwerk oder Verzeichnis gesichert werden, ist der Pfad: | ||
Zeile 22: | Zeile 23: | ||
sudo apt install borgbackup | sudo apt install borgbackup | ||
- | Key generieren (sofern nicht bereits vorhanden) und auf Storage-Box übertragen, | + | ==== Schlüssel tauschen ==== |
+ | Key generieren (sofern nicht bereits vorhanden) und auf Storage-Box übertragen, | ||
ssh-keygen -t rsa -b 4096 | ssh-keygen -t rsa -b 4096 | ||
Zeile 44: | Zeile 46: | ||
ssh -p23 u123456@u123456.your-storagebox.de mkdir -p backups/ | ssh -p23 u123456@u123456.your-storagebox.de mkdir -p backups/ | ||
- | Backup-Ordner auf der Storage-Box initialisieren | + | Backup-Ordner auf der Storage-Box initialisieren. Passwort |
borg init --encryption=repokey ssh:// | borg init --encryption=repokey ssh:// | ||
Zeile 67: | Zeile 69: | ||
Liste Dateien eines Backups in eine Text-Datei schreiben | Liste Dateien eines Backups in eine Text-Datei schreiben | ||
borg list ssh:// | borg list ssh:// | ||
+ | |||
+ | Optionen: nur Pfad und Dateiname, sortiert | ||
+ | borg list --short ssh:// | ||
==== Daten wiederherstellen ==== | ==== Daten wiederherstellen ==== | ||
Zeile 77: | Zeile 82: | ||
borg extract ssh:// | borg extract ssh:// | ||
- | ==== Backups löschen ==== | + | ==== Backups |
- | Backups | + | Backups |
borg list ssh:// | borg list ssh:// | ||
Zeile 86: | Zeile 91: | ||
Alle Backups zu einem Server/PC löschen (hier mctest) | Alle Backups zu einem Server/PC löschen (hier mctest) | ||
borg delete ssh:// | borg delete ssh:// | ||
+ | |||
+ | ==== Backups auomatisiert löschen ==== | ||
+ | Damit der Speicherplatz mit der Zeit nicht verbraucht wird, sollten regelmäßig, | ||
+ | |||
+ | borg prune --dry-run -v --list --keep-within=1d --keep-daily=7 --keep-weekly=4 --keep-monthly=12 ssh:// | ||
+ | |||
+ | Dieser Befehl (mit --dry-run) zeigt die Backups/ | ||
+ | Bedingungen in diesem Beispiel: 7 aus den letzten Tagen, 4 der letzten Wochen und 12 der letzten Monate. \\ | ||
+ | Das System identifiziert dies automatisch. \\ | ||
+ | |||
+ | Pfad und Zugangsdaten anpassen. \\ | ||
+ | O.a. Code führt nur einen Trockenlauf aus. \\ | ||
+ | Scharfschaltung: | ||
+ | |||
+ | Freigeben des nicht mehr benötigten Speicherplatzes: | ||
+ | borg compact ssh:// | ||
+ | |||
==== Backup automatisieren ==== | ==== Backup automatisieren ==== | ||
Zeile 99: | Zeile 121: | ||
# | # | ||
## Setzten von Umgebungsvariablen | ## Setzten von Umgebungsvariablen | ||
- | ## falls nicht der Standard SSH Key verwendet wird können Sie hier den Pfad zu Ihrem private Key angeben | + | ## Pfad zu Ihrem private Key, falls nicht der Standard SSH Key verwendet wird |
export BORG_RSH=' | export BORG_RSH=' | ||
- | ## Damit das Passwort | + | ## Passwort |
- | export BORG_PASSPHRASE=" | + | ## Andernfalls würde |
+ | export BORG_PASSPHRASE=" | ||
+ | ## This has to be set when the repository has been created by user and the script is called by cron | ||
+ | export BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK=yes | ||
| | ||
## Setzten von Variablen | ## Setzten von Variablen | ||
Zeile 108: | Zeile 133: | ||
export BACKUP_USER=' | export BACKUP_USER=' | ||
export REPOSITORY_DIR=' | export REPOSITORY_DIR=' | ||
- | ## Hier Struktur für den Hetzner-Serrver | + | ## Hier Struktur für den Hetzner-Server |
export REPOSITORY=" | export REPOSITORY=" | ||
| | ||
Zeile 117: | Zeile 142: | ||
echo "###### | echo "###### | ||
| | ||
- | ## An dieser Stelle können verschiedene Aufgaben vor der Übertragung der Dateien ausgeführt werden, wie z.B. | + | ## An dieser Stelle können verschiedene Aufgaben vor der Übertragung der Dateien ausgeführt werden, |
+ | ## wie z.B. | ||
## - Liste der installierten Software erstellen | ## - Liste der installierten Software erstellen | ||
## - Datenbank Dump erstellen | ## - Datenbank Dump erstellen | ||
Zeile 123: | Zeile 149: | ||
## Dateien ins Repository übertragen | ## Dateien ins Repository übertragen | ||
## Gesichert werden hier beispielsweise die Ordner root, etc, var/www und home | ## Gesichert werden hier beispielsweise die Ordner root, etc, var/www und home | ||
- | ## Ausserdem finden Sie hier gleich noch eine Liste Excludes, | + | ## Ausserdem finden Sie hier gleich noch eine Liste Excludes, |
+ | ## somit per default ausgeschlossen werden. | ||
| | ||
echo " | echo " | ||
Zeile 143: | Zeile 170: | ||
echo "###### | echo "###### | ||
- | Ausführbar machen | + | === Cronjob einrichten === |
+ | Datei Ausführbar machen | ||
sudo chmod u+x / | sudo chmod u+x / | ||
- | Testen | + | ggf. Testen |
sudo / | sudo / | ||
- | |||
Einfügen in crontab | Einfügen in crontab | ||
sudo nano / | sudo nano / | ||
0 0 * * * root / | 0 0 * * * root / | ||
- | Hier Start täglich um 0:00 Uhr | + | Hier Start täglich um 0:00 Uhr.\\ |
+ | **Voraussetzungen**: | ||
+ | * das ausführende System muss zu der angegebenen Zeit in Betrieb sein. Der Job wird nicht bei einem späteren Einschalten nachgeholt! | ||
+ | * Wenn das Script durch root ausgeführt werden soll, für die Sicherung von Systemdateien vermutlich erforderlich, | ||
+ | === Anacronjob === | ||
+ | Läuft ein System | ||
+ | Zur Verfügung stehen die Zyklen: | ||
+ | * täglich >> Ordner / | ||
+ | * wöchentlich >> Ordner / | ||
+ | * monatlich >> Ordner / | ||
+ | Die ausführbahren Scripte müssen in den entsprechenden Ordnern liegen. | ||
===== Selbst programmiertes, | ===== Selbst programmiertes, | ||
- | Siehe auch: https:// | + | ++++ Quellen: | |
+ | * https:// | ||
+ | ++++ | ||
Die vorgestellten Scripte sichern regelmäßig und automatisiert ausgewählte Dateien in gepackten Datein. \\ | Die vorgestellten Scripte sichern regelmäßig und automatisiert ausgewählte Dateien in gepackten Datein. \\ | ||
Zeile 204: | Zeile 243: | ||
Ersetzen: SOURCE, < | Ersetzen: SOURCE, < | ||
Leerzeichen am Ende der SOURCE! \\ | Leerzeichen am Ende der SOURCE! \\ | ||
+ | === Inhalt gepackter Dateien anzeigen === | ||
+ | tar -tvf backup_gepackt.tar.gz | ||
+ | |||
+ | Inhaltsverzeichnis in Datei schreiben | ||
+ | tar -tvf backup_gepackt.tar.gz > content.txt | ||
+ | |||
+ | === Dateien entpacken === | ||
Entpacken (in aktuelles Verzeichnis): | Entpacken (in aktuelles Verzeichnis): | ||
tar -xf backup_gepackt.tar.gz | tar -xf backup_gepackt.tar.gz | ||
Zeile 217: | Zeile 263: | ||
=== Komplexes System === | === Komplexes System === | ||
Das System sichert regelmäßig((Zyklus definiert durch / | Das System sichert regelmäßig((Zyklus definiert durch / | ||
- | < | + | < |
- | Der Speicherbedarf wächst durch dieses System kontinuierlich. \\ | + | Der Speicherbedarf wächst durch dieses System kontinuierlich((in dem Rahmen, in dem es Änderungen am Datenbestand gab)). \\ |
Ältere Dateien müssen daher regelmäßig manuell gelöcht oder verschoben werden. \\ | Ältere Dateien müssen daher regelmäßig manuell gelöcht oder verschoben werden. \\ | ||
In keinem Fall sollte ein Backup auf der System-Partition gesichert werden, da dieses, sollte der Speicherplatz restlos verbraucht sein, ggf. unbrauchbar oder unausführbar werden könnte. \\ | In keinem Fall sollte ein Backup auf der System-Partition gesichert werden, da dieses, sollte der Speicherplatz restlos verbraucht sein, ggf. unbrauchbar oder unausführbar werden könnte. \\ | ||
Zeile 273: | Zeile 319: | ||
umount " | umount " | ||
exit | exit | ||
- | |||
==== Backup ausführen ==== | ==== Backup ausführen ==== | ||
Zeile 298: | Zeile 343: | ||
Voraussetzung: | Voraussetzung: | ||
- | Läuft der PC nicht dauerhaft, | + | Andernfalls |
- | * [[https:// | + | |
- | * [[https:// | + | |
==== Daten von Remote-System holen ==== | ==== Daten von Remote-System holen ==== | ||
Zeile 321: | Zeile 364: | ||
Auch hier ist die Automation über einen Cronjob möglich, siehe [[#Backup ausführen|Backup ausführen]]. \\ | Auch hier ist die Automation über einen Cronjob möglich, siehe [[#Backup ausführen|Backup ausführen]]. \\ | ||
- | ~~DISCUSSION~~ | + |
open/it/backup.1722158435.txt.gz · Zuletzt geändert: von Kai