[ANLEITUNG] Backup-Routine mit Snapshots ins Array und auf UAD, Clouds & Crypted Remotes


Digikus

Recommended Posts

Hallo Zusammen,

 

nachdem ich einige Backup-Möglichkeiten ausprobiert habe und dank des tollen Supports hier, möchte ich gerne meine Backup-Routine hier an alle Einsteiger und Interessierte gerne zurück geben.

Was war mein Ziel?

Ich habe alle wichtigen Dokumente eingescannt und vernichtet, somit alles einzig nur noch digital.

Diese wollte ich unbedingt nicht nur mit Snapshots auf einer Parity gesichert wissen, sondern zusätzlich verschlüsselt in einer cloud und auf wechselnden USB-Platten, die ich hin und wieder tausche und so automatisiert zusätzlich ein echtes "cold-backup" erzeuge.

 

Dazu sollen natürlich auch die Appdata, VMs, boot-stick gesichert werden (können), wie ich es will.

Bei Appdata sollen beispielsweise einzelne Dateiendungen ausgeschlossen werden um Platz zu sparen (Gameserver).

Also eine one for all - Lösung.

 

Meine Lösung besteht aus dem Docker "Luckybackup", das verschiedene Profile, Snapshots und sämtliche Zusatzfunktionen beherrscht, und aus drei Userscripts aufgerufen wird, die vorher entsprechend die Remotes oder UADs mounten und anschließend unmounten.

 

Zu lokalen Backups muss ich denke nicht viel sagen, einfach Quellordner und Zielordner auswählen, Anzahl Snapshots, unter Erweitert mögliche exklusive Ausschlüsse und Einbezüge benennen und fertig.

30609258_2021-09-2112_27_20-luckyBackup-appdata-snaps.thumb.png.7a9842341ef643a8a8793666dc947cc1.png

 

Anschließend oben mit dem Zeitplaner einen Zeitplan erstellen, "Konsolen-Modus" aktivieren, "in Cron-Datei eintragen", und "cron anzeigen" auswählen:

image.png.35a9bd122d894ab8a4fdc82a2b0a8c09.png  image.png.0b326c6bdb78f7646bbbd51ddf67fd9f.png      

 

Ergebnis:

image.png.1d3e91d89a61fd835feda980052c9a4e.png

Das nun abschreiben, bzw. gegen mein Script überprüfen und anschließend den Zeitplan löschen und "in Cron-Datei eintragen" auswählen.

sonst wird später doppelt ein backup gefahren. Lokal gibts da keine Probleme, aber bei uad und remote später ohne mounten sonst schon..

 

In den Userscripts nun ein neues Script anlegen und folgenden Inhalt übernehmen:

#!/bin/bash

#als root user ausführen
#docker exec -i luckyBackup /usr/bin/luckybackup -c --no-questions --skip-critical /root/.luckyBackup/profiles/default.profile 

#als luckybackup user ausführen
docker exec -i --user luckybackup luckyBackup /usr/bin/luckybackup -c --no-questions --skip-critical /luckybackup/.luckyBackup/profiles/default.profile 

sleep 20s

 

Ich habe hier mal beide Befehle drin, einen für LuckyBackup eingestellt als User und einmal der Befehl als Root (wer boot/ zusätzlich sichern will z.B.).

 

Nun zuerst in Luckybackup das Erste Backup erstellen, danach einmal das Userscript im Hintergrund ausführen und die Logs checken, der Zweite Log sollte dann so aussehen:

image.thumb.png.7223f7a8038882a2fc829c97a35cd0a1.png

 

Das Backup ist Inkrementell als Snapshot, im 2. Durchlauf wurden nur noch 4 Files geschrieben und 2 gelöscht. 

Auf Eurer Userscript-Seite könnt ihr nur den gewünschten Zeitplan hinterlegen, bei mir ist es z.B. jeden Tag um 2:30 Uhr:

 

Damit ist das täglich lokale Backup aktiv.

Natürlich würde lokal auch der Zeitplan in Luckybackup funktionieren, allerdings nur der lokale ohne mounten. Ich habe daher alle in den Userscrips, damit ich die Übersicht über alle Backups habe:

 

1057340880_2021-09-2111_27_28-CloudEller_Userscripts.thumb.png.09357f21d2a39823f90e4cb2df77bd80.png

 

Wie ihr seht habe ich insgesamt 7 Skripte angelegt, auf die restlichen gehe ich in den nächsten 2 Posts ein. Erst da wird es eigentlich interessant.

 

  • Like 2
  • Thanks 2
Link to comment

Backups auf UADs

 

Ich mache meine Backups immer nachts um 2:00 Uhr, damit ich sie am Tage jederzeit wechseln kann ohne vorher ins System zu gehen zum unmounten etc.

Heißt was aus dem Keller holen oder Wäsche machen = Festplatte wechseln am Server. 

 

zum Einrichten in Luckybackup müssen die Unassigned Devices jedoch erst einmal gemountet werden. hierfür meine mount / unmount Skripts:

 

Mount UAD - skript

\#!/bin/bash

\# 1TB Crucial SSD MX500
/usr/local/sbin/rc.unassigned mount /dev/disk/by-id/ata-CT1000MX500SSD1_xxxxxxxxxxxx  

\# 8TB Western Digital WD White
/usr/local/sbin/rc.unassigned mount /dev/disk/by-id/ata-WDC*WD80EDAZ-xxxxxxxxxxxx 

\# 5TB Seagate 2,5" Portable
/usr/local/sbin/rc.unassigned mount /dev/disk/by-id/ata-ST5000LM000-xxxxxxxxxxxx 

sleep 10s

Die genaue Bezeichnung lässt sich ja auf der Main Page kopieren und hier einsetzen, anschließend im Hintergrund ausführen

Natürlich lässt sich auch auf der Main Page per Mausklick mounten, aber wir brauchen  das sowieso für das backup-skript gleich und so können wir das gleich Stück für Stück ausprobieren.

 

Anschließend ist die / sind die Platte/n für Luckybackup sichtbar und ihr könnt ein neues Profil anlegen, bei mir ext_backup:

image.png.ae749e609899a0e8a235866824594718.png.

Hier habe ich bereits einige Backups für verschiedene Platten mit auch unterschiedlichen Inhalten angelegt.

 

Anschließend analog zum 1.Post verfahren:

- Backups anlegen

- Zeitplan erstellen, in Cron-Datei eintragen

- Inhalt Kopieren / mit dem Skript hier abgleichen

- Zeitplan löschen, in Cron-Datei eintragen

- Backup erstmalig ausführen in Luckybackup

 

Nach dem erfolgreichen Backup, Luckybackup wieder schließen und das User-Skript zum unmounten erstellen und im Hintergrund ausführen:

#!/bin/bash
sync -f /mnt/disks/CT1000MX500SSD1_2xxxxxxxxxx
sync -f /mnt/disks/WDC_WD80EDAZ-xxxxxxx_xxxxxxx
sync -f /mnt/disks/ST5000LM000-xxxxxx_xxxxxxxxxx
sleep 10s
/usr/local/sbin/rc.unassigned umount /dev/disk/by-id/ata-CT1000MX500SSD1_xxxxxxxxxxxx
/usr/local/sbin/rc.unassigned umount /dev/disk/by-id/ata-WDC_WD80EDAZ-xxxxx_xxxxxxx
/usr/local/sbin/rc.unassigned umount /dev/disk/by-id/ata-ST5000LM000-xxxxxx_xxxxxxxx

 

 

Jetzt legen wir das komplette Backup User-skript an:

#!/bin/bash
# 1TB Crucial SSD MX500
/usr/local/sbin/rc.unassigned mount /dev/disk/by-id/ata-CT1000MX500SSD1_20xxxxx  
# 8TB Western Digital WD White
/usr/local/sbin/rc.unassigned mount /dev/disk/by-id/ata-WDC_WD80EDAZ-11xxxxxx 
# 5TB Seagate 2,5" Portable
/usr/local/sbin/rc.unassigned mount /dev/disk/by-id/ata-ST5000LM000-2Axxxxxxxxxxx 
sleep 10s

#luckybackup als root user ausführen            
#docker exec -i luckyBackup /usr/bin/luckybackup -c --no-questions --skip-critical /root/.luckyBackup/profiles/ext-backup.profile

#luckybackup als luckybackup user ausführen
docker exec -i --user luckybackup luckyBackup /usr/bin/luckybackup -c --no-questions --skip-critical /luckybackup/.luckyBackup/profiles/ext-backup.profile 

sync -f /mnt/disks/CT1000MX500SSD1_20xxxxxxxxxxxxxxx
sync -f /mnt/disks/WDC_WD80EDAZ-1xxxxx-xxxxxx
sync -f /mnt/disks/ST5000LM000-xxxxx_Wxxxxxxxx
sleep 30s
/usr/local/sbin/rc.unassigned umount /dev/disk/by-id/ata-CT1000MX500SSD1_2xxxxxxxxxxxxx
/usr/local/sbin/rc.unassigned umount /dev/disk/by-id/ata-WDC_WD80EDAZ-1xxxxx_Vxxxxxxx
/usr/local/sbin/rc.unassigned umount /dev/disk/by-id/ata-ST5000LM000-2xxxxxxxxx_xxxxxx

 

Bei jedem Ausführen versucht nun Luckybackup alle UADs zu mounten, das backup zu machen und zu unmounten.

Sollte eine UAD nicht zur Verfügung stehen, so wird das Backup dieser einen Platte mit einem Fehler übersprungen.

 

Einmal im Hintergrund ausführen und nach den Logs schauen. Wichtig ist dass ihr während die Platten gemounted sind, nichts separat dort kopiert oder in Unterordner geht, dann wird die Platte u.u. nicht mehr automatisch geunmounted.

 

Nun noch Zeitplan beim User-Skript hinterlegen und das war es schon. Funktioniert bei mir sehr zuverlässig, mit Abstand das schnellste Backup, dass ich probiert habe und dazu ist es sehr Platzsparend und einfach zu bedienen.

 

Edited by Digikus
  • Like 2
  • Thanks 1
Link to comment

Backup in Clouds oder verschlüsselt in Clouds

 

An sich ist es ziemlich identisch zum Backup auf UADs, nur muss die Cloud gemounted werden und ein Verzeichnis angelegt werden.

Hier bediene ich mich an rclone, aus den community apps.

Man kann sich gut an das Tutorial von Spaceinvader One zum Einrichten der Clouds halten:

How to use rclone in unRAID Copy sync and encrypt files to the cloud

 

So können sämtliche Clouds gemountet werden, bei Spaceinvader wird es dauerhaft gemacht, ich gehe jetzt nur mal auf eine Cloud ein, die ebenfalls nur nachts gemountet wird, ein verschlüsseltes Backup macht und wieder unmountet.

danach sollten euch alle Anpassungen möglich sein.

 

In Luckybackup wieder ein neues Profil anlegen, bei mir "cloud"

image.png.3b281c6dbb9758be59f34f3c224bf82b.png

 

 

mount-user-skript

#!/bin/bash

mkdir -p /mnt/remotes/encrypt_backup

#Connect to remote secure via rclone and mount it locally to mnt/remotes/encrypt_backup
rclone mount --allow-non-empty --max-read-ahead 1024k --allow-other secure: /mnt/remotes/encrypt_backup &
sleep 10s

Im Hintergrund ausführen

 

Nun Vorgehen analog zu 1. und 2. Post

 

unmount-user-skript

#!/bin/bash

sleep 20s
sync -f /mnt/remotes/encrypt_backup
umount /mnt/remotes/encrypt_backup && rmdir /mnt/remotes/encrypt_backup

ich habe meine magentacloud, da 25GB, als "secure" in rclone angelegt, die ich so nun lokal mounten kann.

 

 

Nun noch das komplette Backup-Skript anlegen

#!/bin/bash

mkdir -p /mnt/remotes/encrypt_backup

#Connect to remote secure via rclone and mount it locally to mnt/remotes/encrypt_backup
rclone mount --allow-non-empty --max-read-ahead 1024k --allow-other secure: /mnt/remotes/encrypt_backup &
sleep 10s

#als root user ausführen 
#docker exec -i luckyBackup /usr/bin/luckybackup -c --no-questions --skip-critical /root/.luckyBackup/profiles/cloud.profile 

#als luckybackup user ausführen
docker exec -i --user luckybackup luckyBackup /usr/bin/luckybackup -c --no-questions --skip-critical /luckybackup/.luckyBackup/profiles/cloud.profile 

sleep 20s
sync -f /mnt/remotes/encrypt_backup
umount /mnt/remotes/encrypt_backup && rmdir /mnt/remotes/encrypt_backup

 

Wie oben im Hintergrund laufen lassen, checken, Zeitplan des User-Skripts anlegen und fertig.

An dieser Stelle macht bitte ein Backup des Flash-Stick Sinn, da eure rclone.conf wichtig ist, damit ihr später wieder an eure verschlüsselten Daten kommt. Auch die User-Skripts werden so ins Backup vom Stick geschrieben.

Ich habe zusätzlich in meiner Keepass Datenbank mir die Secrets aus der Unraid Oberfläche "Einstellungen-->Rclone" gesichert, was faktisch der Inhalt der rclone.conf ist und ich sie so nicht verlieren kann.

 

Ich hoffe das hilft ein paar von euch, die noch eine gute Backuplösung im Step-by-Step Verfahren gesucht haben!!

 

MfG digikus

 

 

 

 

Edited by Digikus
  • Like 1
  • Thanks 1
Link to comment
  • ich777 changed the title to [ANLEITUNG] Backup-Routine mit Snapshots ins Array und auf UAD, Clouds & Crypted Remotes
  • 1 year later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.