ubuntuusers.de

"Backup" mit rsync und Hardlinks

Status: Gelöst | Ubuntu-Version: Server 18.04 (Bionic Beaver)
Antworten |

geilmaker

Anmeldungsdatum:
4. März 2021

Beiträge: 5

Guten Tag, sorry, ich bin neu hier im Forum, deswegen eventuell seltsame Formatierung meines Beitrags 😐

Ich versuche aktuell ein Backup eines Ordners mit Unterordnern und Dateien zu machen, dieses allerdings nur mit Hardlinks zu füllen statt mit richtigen Daten um Speicherplatz zu sparen... Also das Ziel ist, dass jede Datei die in diesem Ordner gelöscht wird, in dem Backup noch da ist, das ist alles. Dafür wollte ich rsync verwenden, um ein Backup zu erstellen. Mein Gedanke war, dass in dem Backup Ordner Hardlinks zu allen Dateien drin sind, und wenn dann im Original eine Datei gelöscht wird, dann ist im Backup noch der Hardlink da und auch die Datei, richtig soweit?

So war mein Gedanke, ich habe versucht mit

1
rsync -av /mein/quellordner /mein/zielordner --link-dest="/mein/quellordner"

diese Backup mit Hardlinks zu erzeugen, allerdings wurden schlichtweg alle Dateien kopiert... Diesen Befehl habe ich in Benutzung gesehen bei einer Person, die ein richtiges Backup erstellt hat und alle weiteren Backups mit Hardlinks auf das vorherige Backup verknüpft hat... nun wollte ich das hier so gestalten, dass mein Backup (welches sich permanent mit aktualisieren soll und wirklich nur die gelöschten Dateien zusätzlich beinhalten soll) den Originalordner als Hardlinkverweis nutzt, aber das scheint ja nicht zu funktionieren...

Kann mir dabei jemand weiterhelfen? Ich bin auch offen für andere Lösungsvorschläge, wie gesagt, die Aufgabe ist nur, dass jede Datei die in diesem Ordner gelöscht wird, in dem anderen Ordner weiter existiert.

Vielen Dank schonmal und viele Grüße!

tuxifreund Team-Icon

Projektleitung

Anmeldungsdatum:
7. November 2020

Beiträge: 1178

Hallo,

Willkommen im Forum!

Wenn es auch leider etwas Offtopic hierist : war es ein Versehen, dass du dazu einen Wikiartikel angelegt hast (Click!)?

LG

tuxifreund

geilmaker

(Themenstarter)

Anmeldungsdatum:
4. März 2021

Beiträge: 5

🤣 😢

....ja... Ich schau mal fix wie ich den wieder löschen kann, ich dachte ich hätte nicht auf Speichern geklickt.... Sorry...

tuxifreund Team-Icon

Projektleitung

Anmeldungsdatum:
7. November 2020

Beiträge: 1178

geilmaker schrieb:

🤣 😢

....ja... Ich schau mal fix wie ich den wieder löschen kann, ich dachte ich hätte nicht auf Speichern geklickt.... Sorry...

Den kannst Du gar nicht löschen. Das muss jemand aus dem Wikiteam machen. Ich übernehm das. Kein Problem!

geilmaker

(Themenstarter)

Anmeldungsdatum:
4. März 2021

Beiträge: 5

Oh... Dann vielen Dank dir! Sorry für die Umstände...

Ich hab am Anfang nur Wikieintrag erstellen gefunden und nicht gewusst wo ich einen Forumsbeitrag erstelle 🤣

...wie der erste Mensch auf Erden 🤣

JensHol

Anmeldungsdatum:
31. Oktober 2017

Beiträge: 324

Hallo,

leider schreibst du recht wenig zu deiner Konfiguration.

Daher ein paar Hinweise / Tipps, ohne zu wissen ob die für dich relevant sind, um dir zu helfen:

1) Hardlinks gehen nur, wenn du auf der gleichen Festplatte bleibst. Also Quell und Zielverzeichnis auf der gleichen gemounteten Platte sind.

2) rsync ist nach deiner Beschreibung der falsche Befehl. rsync vergleicht Verzeichnisse und kopiert was neuer ist.

Ich habe ein komplettes Backup-Script, allerdings plattenübergreifend (Datenplatte und Sicherungsplatte)

Für das was du willst (einmal alles von der Quelle auf das Ziel kopieren, aber nicht mit Platten-Verbrauch, sondern Hardlinks sollte der Befehl lauten

cp -al $Backup_Source1 $BACKUP_DESTINATION_PATH1

Details siehe hier: http://manpages.ubuntu.com/manpages/xenial/man1/cp.1.html

Damit würde er alles, was im Quellverzeichnis ist auf dem Zielverzeichnis als Hardlinks anlegen. Wenn du nicht jedes mal ein frisches Verzeichnis nimmst, hast du dann natürlich irgendwann auch die auf Source gelöschten Dateien immer noch im Backup-Destination-Pfad.

Will du z.B. je Tag eine Sicherung des Tages haben (nur die aktuellen Dateien), hast du zwei Möglichkeiten (wenn alles auf gleicher Platte):

a) Jeden Tag neuen Ordner und Cp wie oben

b) Erst mit Copy kopieren und danach mit rsync Dateien die nicht mehr auf der Source sind auch im Ziel löschen. Die Befehle dazu wären

 cp -al $Backup_SOURCE_Path1 $BACKUP_DESTINATION_PATH1
 rsync --stats -aHSAXL --human-readable --delete $BACKUP_SOURCE_PATH1 $BACKUP_DESTINATION_PATH1/  

Wenn du allerdings von Platte A die Sicherung auf B Machen möchtest ist der Weg leicht anders:

1) Beim ersten mal mit mit RSYNC von alter Platte auf neue Platte sichern (Braucht einmal den Speicher, da auf dieser Platte ja noch keine Datei und damit auch kein DIrectory Eintrag liegt)

 rsync --stats -aHSAXL --human-readable --delete $BACKUP_SOURCE_PATH1 $BACKUP_DESTINATION_PATH1/  

2) Ab Folgetag Kopie des letzten Backups mit Hardlinks anlegen:

 cp -al $Backup_GESTERN_Path1 $BACKUP_DESTINATIONHEUTE_PATH1

und danach von dem Quellverzeichnis nur neueres kopieren und gelöschtes im heutigen Backup Ziel löschen:

 rsync --stats -aHSAXL --human-readable --delete $BACKUP_SOURCE_PATH1 $BACKUP_DESTINATIONHEUTE_PATH1/  

Achtung: Teste bitte erst einmal mit einem anderen Verzeichnis um Datenverlust vorzubeugen. Hab nach bestem Wissenund Gewissen für dich individuell zusammengestellt, garantiere aber nicht für Fehler. (Bin aber 99.9% sicher dass es so passt)

geilmaker

(Themenstarter)

Anmeldungsdatum:
4. März 2021

Beiträge: 5

Hallo,

das klingt richtig gut, vielen Dank schonmal für die ganzen Bemühunngen!

Also ich kann es ja mal genau spezifizieren - Wir haben eine Nextcloud installiert und sollen von so viel Dummheit wie möglich ausgehen bei den Benutzern... So bestand die Anfrage, dass jede Datei die jemals hinzugefügt wurde, in einem Ordner immer zur Verfügung steht. Also soll die Datei dann in der Nextcloud gelöscht sein, aber man hat dieses Backup wo man im Notfall die Datei nochmal hernehmen könnte, als zusätzliche Absicherung. Ich hoffe das ist genau genug 😀

So wie ich das verstehe würde ich

cp -al $Backup_Source1 $BACKUP_DESTINATION_PATH1

mal ausführen

1. um ein Backup meines Folders zu machen, wo alle Dateien und Ordner drin sind mit Hardlinks auf die Originaldateien.

2. Wenn ich im Source Folder eine Datei ändere, dann wird diese auch direkt parallel im Backup geändert, dürfte ja das Prinzip von Hardlinks sein.

3. Wenn nun eine Datei im Source Folder gelöscht wird, so besteht sie weiterhin im Backup und wird dort nicht gelöscht.

Hab ich diese 3 Punkte erstmal richtig verstanden und wird das alles so gemacht wenn ich dieses Backup mithilfe von diesem Befehl durchführe? 😀

Und nun wäre ja der letzte Edge Case, dass eine Datei hinzugefügt wird... diese würde ja nicht automatisch im Backup auftauchen, oder doch? Wenn nicht, könnte dieses Problem einfach damit gelöst werden diesen Befehl jeden Tag als Cronjob auszuführen, oder würden dadurch die entfernten Dateien die im Backup noch da sind auch im Backup entfernt werden? 😀

Viele Grüße und nochmal vielen herzlichen Dank! 😀

JensHol

Anmeldungsdatum:
31. Oktober 2017

Beiträge: 324

Da du mit cp immer nur dazu kopierst (lass das rsync weg) kommen im cron immer neue Dateien hinzu.

Das löst aber dein Problem nicht. Denn öffnet jemand for example ein word doc, löscht den Text und drückt auf speichern, ist der Inhalt überall weg! Das hat nix mit backup zu tun sondern ist schlicht Wahnsinn. Schon Ordner verschieben spiegelt die Dateien zigfach und jede Umbenennung hast du hinterher die gleiche Datei x-mal.

Mein Vorschlag: mach den vernünftiges Sicherungskonzept. Täglich per cron, jeden Tag nen unter Ordner mit Tages Datum und ne vollsicherung mit hardlinks.

Dann kannst du auch eine geänderte und heute kaputte excel mit stand gestern wiederholen.

Ich hab ne 2TB Datenplatte, 60% voll. Ich sichere täglich ne Vollsicherung mit hsrdlinks. 1.1. 2TB Sicherungsplatte ist bei 90 Sicherungen von 1.2TB jetzt etwa 65% voll.

Alles andere ist Murks

geilmaker

(Themenstarter)

Anmeldungsdatum:
4. März 2021

Beiträge: 5

Ja, verstehe ich sehr gut... Wir haben halt leider nur einen kleinen vServer mit 100GB Speicher, vielleicht auch bald 300GB... aber dann ist halt bei einer richtigen Backup-Sicherung direkt die Hälfte des Speichers weg und v.a. bei unseren aktuellen 100GB reicht unser Speicher auf der Platte jetzt schon nicht für ein richtiges unkomprimiertes Backup aus 😀

...das ist quasi der Hauptaspekt, der gegen so ein richtiges Backup spricht...

Aber natürlich hast du vollkommen Recht, wenn jetzt jemand in einer Datei den gesamten Inhalt löscht und das speichert, dann gibt es kein Backup von dem Inhalt...

Gibt es denn für mich bei einem gemieteten vServer eine einfache Methode den Speicher zu erweitern? Eigentlich nur ein preisliches Upgrade oder? Also bei mir eine Festplatte hinstellen und die Freigeben würde wohl nichts bringen ohne statische IP, richtig? 😀

...naja, da werden wir wohl nochmal drüber nachdenken, wie genau wir das gestallten... ansonsten muss einfach jemand per sftp den Ordner einmal im Monat manuell runterladen und fertig 😀

Schonmal wieder vielen herzlichen Dank für die Hilfe! Hat mir sehr viel Arbeit erspart 😀

Antworten |