nur noch eine weitere "Strategie" für Versionierung im Backup (mit rsync und cp und Snapshot-Replication)

TB-UB

Benutzer
Mitglied seit
21. Mrz 2017
Beiträge
53
Punkte für Reaktionen
7
Punkte
8
Ich beschreibe hier mein aktuelles Vorgehen.
Vielleicht ist es ja eine Anregung für den einen oder anderen.
Man kann sich ja auch nur einzelne Ideen rausholen, z.B. statt der beschriebenen Schleife über alte TimeBackups oder Snapshots auf einzelne konkrete Ordner verkürzen...

(manch einer mag denken, wie umständlich... aber ich habe schon mehrere Strategien ausprobiert und bin jeweils irgendwann mit den üblichen Verfahren wie Snapshots/HyperBackup oder einfacher Snapshot-Replication auf die Nase gefallen. Sei es weil eine Snaphot-Replication-Verbindung unterbrochen wurde und dann alles neu synchronisiert werden musste (dabei aber anscheinend nur der letzte Snapshot übertragen wird, also eine Art Historie/Versionierung dahin ist), weil Snapshots oder Replications-Aufträge einen Umzug eines Shares auf ein anderes Volume nicht überleben. Mein Ziel einer "absoluten" Historie bei nicht unendlichem Plattenverbrauch stieß bisher an Grenzen.)
(Auch das hier beschribene hat eine Grenze, nämlich dann, wenn man ein Defrag der Nutzdaten SharesXY machen möchte. Ein Defrag kann aber nur pro Volume gemacht werden und ein Defrag auf Snapshots(?!) und/oder(?!) auf Hardlinks(?!) führt wohl zur Auflösung dieser und somit zu Datenvervielfachung. Um diese Grenze nicht auszutesten, sollten die SharesXY evtl auf einem extra VolumeX liegen!)
 
  • Like
Reaktionen: Simon88

TB-UB

Benutzer
Mitglied seit
21. Mrz 2017
Beiträge
53
Punkte für Reaktionen
7
Punkte
8
Nach TimeBackup habe ich UltimateBackup versucht... dann aber wieder verworfen und nur die UB-scripte als Vorlage für eigene scripte genommen.... und das hier gemacht:


Mein Setup:
SharesXY liegen auf Volume1 (wegen Defrag-Thema aber evtl besser auf einem anderen Volume als die Historie-Shares, aber die Beispiele unten sind auf Volume1 ausgelegt)
Alte TimeBackup-Backups liegen auf Volume2
SharesXY_Historie-Ordner liegt auf Volume1 (er soll eine Kopie-Ordner von ShareXY und einen Ordner mit Versionen (die aber nur Hardlinks sind!) ethalten)


Dass manche Ordnerangaben in den Beispielen einen abschließenden / haben, ist entscheidend fürs Gelingen!
Die - am Anfang einer Zeile sollen den Text strukturieren und gehören nicht zum evtl. folgenden Befehl.


1) Jeder ShareXY wird einmal die Woche mit einem Snapshot versehen (das werden dann meine späteren "Versionen")
2) Es wind zunächst pro ShareXY ein "Sicherungsordner" auf der gleichen NAS erstellt
3) Danach werden die "Sicherungsordner" per Snapshot-Replication auf ein 2tes NAS gesichert.


zu 2)
Jeder ShareXY hat ein eigenes script, das (soweit nicht bereits in einem frühren Durchlauf geschehen)
- alte TimeBackup-Backups und dann
- jeden Snapshot bearbeitet
(das script wird einmal die Woche per Aufgabe in DSM ausgeführt, am besten alle scripts in einer Aufgabe, da diese dann nacheinander ausgeführt werden)
(ob das Aufteilen auf verschieden Aufgaben die gleichzeitig gestartet werden einen Laufzeitgewinn bringen würde ist noch zu testen, würde aber sicherlich die Platten an die Grenzen bringen)



Das Script ShareXY.sh macht folgendes:

- Liste1 von vorhandenen TimeBackup-Backups erstellen (nur wenn TimeBackup-Backups vorhanden)
- Liste2 von vorhandenen Snapshots erstellen

(Im Folgenden werden die Listen in zwei Abschnitten verarbeitet, weil die Navigation über die TimeBackup-Backups und über die Snapshots sich im Dateil etwas unterscheidet; speziell was die Bestimmung der Einzelteile für die Zusammenstellung der Namen für die Zielordner betrifft)



- Liste1 abarbeiten, also pro Eintrag in der Liste1 (nur wenn TimeBackup-Backups vorhanden):

-- Überprüfen ob die obersten Zielordner vorhanden ist (so als Art Versicherung, dass in den richtigen Ordner geschrieben wird)
--- test ! -d /volume1/ShareXY_Historie/HauptversionM
--- test ! -d /volume1/ShareXY_Historie/VersionenM

-- Rechte setzen:
--- chmod a+rx /volume1/ShareXY_Historie/HauptversionM
--- chmod a+rx /volume1/ShareXY_Historie/VersionenM


-- falls Zielordner nicht vorhanden (also noch nicht gesichert)

--- Zielordner anlegen:
---- mkdir -p /volume1/ShareXY_Historie/VersionenM/ShareXY_20171104-090400

--- rsync ausführen:
---- rsync -ah /volume2/usb_share2_TimeBackup2_42_copy/AltesTimeBackupCopy/volumeUSB2/usbshare/TimeBackup/MEINENAS_999999995CAF/task_4/20171104-0904/ShareXY/ --stats --delete-excluded --exclude=@eaDir/*** --exclude=#snapshot/*** --exclude=.DS_Store/*** --delete --backup --backup-dir=../z_RsyncChangedOrDeletedFiles_20171104-090400 /volume1/ShareXY_Historie/HauptversionM/ShareXY

--- irgendwie gehen beim rsync Rechte verloren, deshalb Minimalzugriff sichern:
---- chmod a=r /volume1/ShareXY_Historie/HauptversionM/ShareXY

(Durch das rsync werden die veränderten oder mittlerweile gelöschten Dateien in das --backup-dir "verschoben", also auch gesichert)
(Der Ordner HauptversionM enthält jetzt den Aktuellen Stand der Dateien der Quelle, und die --backup-dir)

(Da Snapshots in bestimmten Szenarien gelöscht werden, wird mit cp eine Historie auf Dateibasis erstellt, nur per Links was kaum Platz braucht):
--- cp -al /volume1/ShareXY_Historie/HauptversionM/ShareXY /volume1/ShareXY_Historie/VersionenM/ShareXY_20171104-090400
--- irgendwie gehen beim cp Rechte verloren, deshalb Minimalzugriff sichern:
---- chmod -R a+r,a-w /volume1/ShareXY_Historie/VersionenM/ShareXY_20171104-090400
--- jetzt noch einen "echten" Vergleich machen (diesen Schritt kann man ja auf den letzten verarbeiteten Eintrag aus der Liste1 beschränken, weil ein diff schon recht zeitaufwändig ist)
---- diff -r --exclude=@eaDir --exclude=@eaDir/*** --exclude=#snapshot --exclude=#snapshot/*** --exclude=.DS_Store/*** /volume2/usb_share2_TimeBackup2_42_copy/AltesTimeBackupCopy/volumeUSB2/usbshare/TimeBackup/MEINENAS_999999995CAF/task_4/20171104-0904/ShareXY/ /volume1/ShareXY_Historie/VersionenM/ShareXY_20171104-090400

-- Zielordner fertig
- Liste1 ist fertig

(Wenn das script einmal ausgeführt wurde, enthält die Liste1 ja kein weiteres auszuführends TimeBackup-Backup (da es ja vermutlich keine neuen TimeBackup-Backups mehr gibt, die nicht im ersten Durchlauf bearbeitet wurden ;o))




- Liste2 abarbeiten, also pro Eintrag in der Liste2:

-- Überprüfen ob die obersten Zielordner vorhanden ist (so als Art Versicherung, dass in den richtigen Ordner geschrieben wird)
--- test ! -d /volume1/ShareXY_Historie/HauptversionM
--- test ! -d /volume1/ShareXY_Historie/VersionenM

-- Rechte setzen:
--- chmod a+rx /volume1/ShareXY_Historie/HauptversionM
--- chmod a+rx /volume1/ShareXY_Historie/VersionenM


-- falls Zielordner nicht vorhanden (also noch nicht gesichert)

--- Zielordner anlegen:
---- mkdir -p /volume1/ShareXY_Historie/VersionenM/ShareXY_20190209-093333

--- rsync ausführen:
---- rsync -ah /volume1/@sharesnap/ShareXY/GMT-2019.02.09-09.33.33/ --stats --delete-excluded --exclude=@eaDir/*** --exclude=#snapshot/*** --exclude=.DS_Store/*** --delete --backup --backup-dir=../z_RsyncChangedOrDeletedFiles_20190209-093333 /volume1/ShareXY_Historie/HauptversionM/ShareXY

--- irgendwie gehen beim rsync Rechte verloren, deshalb Minimalzugriff sichern:
---- chmod a=r /volume1/ShareXY_Historie/HauptversionM/ShareXY

(Durch das rsync werden die veränderten oder mittlerweile gelöschten Dateien in das --backup-dir "verschoben", also auch gesichert)
(Der Ordner HauptversionM enthält jetzt den Aktuellen Stand der Dateien der Quelle, und die --backup-dir)

(Da Snapshots in bestimmten Szenarien gelöscht werden, wird mit cp eine Historie auf Dateibasis erstellt, nur per Links was kaum Platz braucht):
--- cp -al /volume1/ShareXY_Historie/HauptversionM/ShareXY /volume1/ShareXY_Historie/VersionenM/ShareXY_20190209-093333
--- irgendwie gehen beim cp Rechte verloren, deshalb Minimalzugriff sichern:
---- chmod -R a+r,a-w /volume1/ShareXY_Historie/VersionenM/ShareXY_20190209-093333
--- jetzt noch einen "echten" Vergleich machen (diesen Schritt kann man ja auf den letzten verarbeiteten Eintrag aus der Liste1 beschränken, weil ein diff schon recht zeitaufwändig ist)
---- diff -r --exclude=@eaDir --exclude=@eaDir/*** --exclude=#snapshot --exclude=#snapshot/*** --exclude=.DS_Store/*** /volume1/@sharesnap/ShareXY/GMT-2019.02.09-09.33.33/ /volume1/ShareXY_Historie/VersionenM/ShareXY_20190209-093333

-- Zielordner fertig
- Liste2 ist fertig
Script ShareXY.sh fertig

(Wenn das script nach jeden Snapshot ausgeführt wird, enthält die Liste2 ja nur einen auszuführenden Snapshot ;o))



zu 3)
Bis jetzt liegt ja noch alles auf der Produktiv-NAS.
Deshalb werden jetzt noch die "Sicherungsordner" per Snapshot-Replication auf ein 2tes NAS gesichert.

Das 2te NAS steht natürlich nicht direkt neben dem Produktiv-NAS und ist nur für die Replication erforderliche Zeit eingeschaltet.
Um nicht beim einfachsten Platteneausfall ein Backup bemühen zu müssen, sind meine Volumes BtrFS-RAID1 mit mindestens 2 Platten.
Um beim Vergrößern eines Volumes mit größeren Platten, wo ja zunächst eine Platte entfernt werden muss, einen weiteren Plattenausfall zu verkraften, sind mindestens 3 Platten im RAID1 hilfreich!
 

TB-UB

Benutzer
Mitglied seit
21. Mrz 2017
Beiträge
53
Punkte für Reaktionen
7
Punkte
8
Das mit dem Defrag ist schon sehr suspect. Nachdem ich aber festgestellt habe, dass alle Snapshots "verloren gehen", wenn man einen GemeinsamenOrdner auf ein anderes Volume schiebt, ist ein solches Verschieben evtl. genauso gut wie ein Defrag (wenn man den Ordner wieder auf das ursprüngliche Volume zurückgeschoben hat), bei dem die Snapshots ja auch besser vorher entfernt werden müssen, möchte man nicht pro Snapshot den vollen Datenverbrauch erzeugen.

Da mal wieder Winterurlaub ist, habe ich meine "Strategie" nochmal ge-reviewed und gemessen an meinen Wünschen noch für gut befunden. Da ein Bild mehr als 1000 Worte sagt, hab ich es mal aufgemalt. Vielleicht hilft es ja einem Anfänger (wie ich es war und bin), drum habe ich es hier angehängt.

(Ich habe eben noch ein paar Beiträge zu Malware/Ransomware gelesen, dort war u.a. die Rede, dass man da evtl ein 2tes Backup das per Pull(!) die Daten zieht brauchen könnte. Das habe ich bisher nicht berücksichtigt, also bei Bedarf selbst dran denken...)
 

Anhänge

  • TB-UB_20211228.PNG
    TB-UB_20211228.PNG
    377,1 KB · Aufrufe: 10


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat