Jump to content

Frage zum MGutt V1.3 Incremental backup script


Recommended Posts

Ich habe eine Frage zur richtigen Vorgehensweise bei meiner Backup strategie:

 

Ich habe mehrere Clients (Windows und Ubuntu) am Unraid server.

Der Unraidserver soll regelmässig mit dem Script vom MGutt backups nehmen von den wichtigen Daten der Clients

Es gibt dazu auf dem Unraid server für jeden Client einen Share "Backup" - hier werden die Daten hingeschrieben mit dem Script vom MGutt... das funktioniert wunderbar.

 

Jetzt will ich aber auch den Unraidserver selbst mit seinen Daten sichern.

Dazu nutze ich externe Platten (auf einem Externen Ubuntu Rechner) der die Daten vom Unraid Server liest und wöchentlich eine andere HDD beschreibt - die nicht benutzte wird dann extern gelagert und so habe ich eine roulierendes System von mehreren Backups, die nie am selben Ort aufbewahrt sind.

 

Die Unraid Backups vom Server selbst mache ich mit Luckybackup, ausgeführt auf dem Zielrechner (Ubuntu), der vom Unraid server die Daten liest, die gesichert werden sollen.

 

Wie gehe ich aber mit den "Daten" um, die das Script von MGutt vorher von den Clients erzeugt hat und die sich bereits in den Backup-Shares in Unraid befinden - auch diese Daten würde ich gerne noch als Kopie an mehreren Orten auf verschiedenen Mediums haben

Aber MGutt schreibt die Daten ja nur einmal - die Verzeichnisse sind ja nur Verweise nach den Daten und nicht die Daten selbst!

Was passiert hier eigentlich, wenn ich ein Backup vom Backup mache - ist das dann überhaupt sinnvoll wenn die Verzeichnisse nur Hardlinks sind?

Wie sichere ich die Daten die vom MGutt script auf den Unraid server geholt sind ein zweites Mal... kann ich das mit Luckybackup überhaupt machen, zumal die Daten ja auch von NTFS (Windows) kommen (Via Samba und MGUtt script auf Unraid ausgeführt)

 

Ich habe nämlich auch offenbar ein Rechte problem:

Auf dem Ubuntu Rechner der die Sharedaten von Unraid mittels Luckybackup ein zweites Mal extern sichern soll, kriege ich eine Fehlermeldung in Luckybackup: error 23 und permission error. Allerdings ausschliesslich bei den .log files die vom MGutt Script jeweils in die Backupverzeichnisse geschrieben werden.

 

Lange Rede kurzer Sinn:

Wie sichere ich das Backupverzeichnis mit den Daten vom MGutt script korrekt ein zweites Mal ?

 

Danke für die Hilfe schonmal...

 

Ulli

Link to comment
12 hours ago, ullibelgie said:

vom Backup mache - ist das dann überhaupt sinnvoll wenn die Verzeichnisse nur Hardlinks sind?

Entweder das Backup-Programm erkennt die Hardlinks und kopiert sie als solche oder es kopiert die reguläre Datei. Daten gehen dabei keine verloren, falls du das meinst. Es kann nur eben passieren, dass du in unRAID 1TB belegst und auf dem Backup-System 10TB, weil die Hardlinks nicht verstanden werden.

 

12 hours ago, ullibelgie said:

Allerdings ausschliesslich bei den .log files

Dann führst du das Backup vermutlich nicht als Root aus, denn die Log Files gehören dem User Root. Ein Backupserver muss immer als Root laufen, ansonsten kannst du niemals eine 1:1 Kopie von einem anderen Server machen. Oder man nutzt auf dem Quellserver tar als Root und sichert alles in Archiven, die einem normalen User zugewiesen werden und der Backupserver holt die Archive dann ab. Inkrementell geht das allerdings nicht.

 

Es kann übrigens Sinn machen die Option --numeric-ids zu verwenden, damit User/Gruppen der Dateien 1:1 kopiert werden und nicht in Abhängigkeit vom Backupserver.

Link to comment

Danke für die Erklärung.

Offenbar mache ich aber immer noch Anfängerfehler!

 

Die Backup's von den Clients auf den Unraidserver funktionieren ja mit Deinem Script - auch mit den Hardllinks. Client--> Unraid ist also nicht das Problem

 

Ich habe jetzt mal versucht diese Backups vom Unraid server auf eine externe USB Platte (ext4) am Ubuntu rechner auch mit Deinem Script zu transferieren (nicht mit Lucky Backup)

- den Code vom Script V1.3 mit einem Texteditor auf den Ubuntu-Rechner übertragen und als "test.sh" gespeichert

- dann im Terminal das file ausführbar gemacht mit "chmod u+x test.sh"

- mit " ./test.sh'  gestartet

Ich hatte dazu wenige Daten mehrmals mit Deinem Script vom Client auf den Unraidserver in einen Test-Share übertragen. So hatte ich mehrere Unterfolder mit einer Menge von Hardlinks zum Testen

 

Resultat:

Wenn ich das Script wie beschrieben auf dem Ubuntu Rechner ausführe werden keine Hardlinks übernommen, sondern die Daten mehrmals geschrieben...

On 6/6/2022 at 7:56 AM, mgutt said:

Es kann nur eben passieren, dass du in unRAID 1TB belegst und auf dem Backup-System 10TB, weil die Hardlinks nicht verstanden werden

Leider passiert genau das !

Was mache ich bloss falsch.... ?? Wie kann ich sicherstellen, daß mit dem Script auf dem Ubuntu 20.04LTS die Hardlinks mitgenommen werden - oder geht das gar nicht?

...bitte nicht lachen, bin eben kein "Experte".....

Link to comment

Ich habe jetzt mal diesen kleinen share mit insgesamt 300kB Daten und vielen Hardlinks versucht manuell mit rsync vom Unraid server auf meinen Ubuntu Rechner zu bringen. Ich wollte wissen ob, die Hardlinks übernommen werden

So sieht es auf Unraid aus: (siehe File grafik.png)

 

Dann auf dem Ubuntu Rechner im Terminal ausgeführt:

 

rsync -avh -H "/mnt/user/Ulli_Laptop" "/media/...."

 

Resultat: HARDLINKS werden nicht übernommen, sondern die Daten neu geschrieben !

 

Welche Anpassungen muss ich tun, damit die Hardlinks doch übernommen werden.

Ich habe bei SMB settings übrigens "unix extensions = yes" gesetzt - sowohl auf Unraid als auch im smb.conf file unter global auf dem Ubuntu Rechner

Da bin ich mir nicht sicher ob das notwendig, oder gar verkehrt ist...

 

Was tun ?

Backup vom Unraidserver auf remote disks via Samba funktioniert also grundsätzlich nicht

 

Ulli

 

grafik.png

Link to comment

2ter Nachtrag:

Inzwischen denke ich, daß rsync auf dem Quellrechner ausgeführt werden muss, will man die Hardlinks der Quelldateien behalten auf den Backup-Dateien auf dem Zielrechner.

 

Offenbar braucht es einige tiefgreifendere Anpassungen, um die Hardlinks wirklich zu kopieren auf einen anderen Rechner.

Leider ist das zuviel für meine Anfängerkenntnisse...

 

@mgutt Ist es irgendwie machbar, Dein rsync script so anzupassen, dass man Deinen guten Rat auch einhalten kann, nämlich ein Backup mit read only permission abzuholen anstatt vom Unraid server zu Pushen mit write permission ?

Leider funktioniert das Script nur auf dem Unraid server selber (so war es ja auch gedacht) - aber wie soll ich dann sicher Backups von den Shares auf externe SMB-disks übertragen ?

 

Oder was soll ich noch anderes veränderen, um den Schreibzugriff auf externe Remote disks von Unraid zu vermeiden, aber dennoch die Hardlinks zu sichern?

 

Danke für Info!

Link to comment

SMB unterstützt keine Hardlinks mehr (ging früher mit SMB1, aber mittlerweile nicht mehr). Daher kannst du keine Hardlinks auf ein SMB Ziel pushen.

 

Wenn du Hardlinks erhalten möchtest, dann solltest du rsync mit SSH nutzen. Dh du führst das Skript auf dem Ziel aus und nimmst als Quelle zB "root@tower:/mnt/user....". Das hat natürlich den Nachteil, dass du mit vollen Schreibrechten auf den Quellserver zugreifst. Das wollen wir natürlich auch nicht. Aus dem Grund verwende ich einen Container. Ich habe diesen gerade in Github veröffentlicht (Support). Sollte in ca 2 Stunden in den Unraid Apps zu finden sein.

 

Der Vorteil an dem Container ist, dass er nur read-only auf "/mnt/user" zugreifen darf bzw man könnte natürlich den Pfad noch so anpassen, dass er nicht auf alle Shares, sondern nur auf bestimmte zugreifen kann. Aber read-only ist einfach das Wichtigste.

image.png.33689d0be37345d4fe63b9fb61cdc915.png

 

Bei externem Zugriff braucht man natürlich eine Port-Freigabe.

  • Like 1
Link to comment

Toll, dass Du da gleich wieder einer so super Antwort drauf hast !

 

Habe den Container ausprobiert - funktioniert einwandfrei auf meiner alten Hardware. Jetzt muss ich mir mal uberlegen wie ich damit den workflow optimal gestalte - Cronjobs sind glaube ich bei meinem Gebrauch nicht so sinnvoll, denn ich nutze den Server ja nur sporadisch, sicher nicht jeden Tag - der Server ist dann auch meist ausgeschaltet.

Ich werde die Backups vom Server also erstmal manuel machen mit einem kleinen Script auf dem Zielrechner

 

Danke fur die tolle Arbeit hier !

Link to comment

Um Dein Backup rsync script (Version 1.3) jetzt zusammen mit dem rsync server Docker zu nutzen, musste man jetzt noch den SSH zugang auf Zertifikate umstellen - momentan wird in dem Script sshpass verwendet (code line 127ff.)

 

Wie muss ich den Code dann also anpassen um (wie im Support-Thread beschrieben) Dein Backupscript 1.3 mit den vorher erzeugten Zertifikaten  benutzen zu konnen ?

Link to comment

Hab nochmal nachgedacht:

Um ein komplettes Backup der Shares vom Unraid Server zu einem externen Speicher zu machen (grosse HDD) brauche ich ja nur eine 1:1 Kopie des Servers (mit Hardlinks!  Das kann ich ja dann mit quasi 1 Zeile rsync machen wie im Support  Thread von dem Rsync Server Container auch beschrieben...

 

 

Link to comment
9 hours ago, ullibelgie said:

Das kann ich ja dann mit quasi 1 Zeile rsync machen

Jo. Du musst aber -H nutzen, damit er Hardlinks berücksichtigt.

 

Ich würde die Optionen verwenden:

 

--archive

Alles rekursiv kopieren

 

--hard-links

Auch Hardlinks

 

--itemize-changes

Jeden Transfer loggen

 

--numeric-ids

Dateinhaber nicht mit Usern auf dem Zielsystem abgleichen, sondern einfach nur die User / Gruppen IDs der Quelle übernehmen

 

Siehe auch:

https://linux.die.net/man/1/rsync

Link to comment

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.

×
×
  • Create New...