- Mitglied seit
- 19. Okt 2009
- Beiträge
- 48
- Punkte für Reaktionen
- 0
- Punkte
- 12
Hallo an alle!
Aus (für mich) aktuellem Anlass mußte ich mich die letzten Wochen tiefer mit dem DS Backup beschäftigen. Hier im Forum habe ich auch diverse Beiträge gelesen, und viele davon hätten gerne alternierende Backups, möglichst auch auf verschiedenen externen Festplatten, die evtl. auch nur zeitweise an der DS aktiv sind.
Soetwas wollte ich auch (zumindest in groben Zügen) und deshalb have ich versucht, MEINE Bedürfnisse erstmal in eine Form zu bringen, die nur noch grundsätzliches Einstellen meinerseits verlangt und ansonsten ohne Benutzereingriff ausgeführt werden kann.
Eins noch vornweg: Ich habe mich dabei explizit NOCH NICHT mit den diversen Datenbanken beschäftigt, dh. ich lasse die Sicherung der MySQL Datenbank und der Photostation (& Blog)-Daten durch die Synology eigene Lösung sichern, das funktioniert wunderbar in Zusammenarbeit mit meiner eigenen Backuplösung.
Was ich möchte:
* eine externe Sicherungsplatte soll nur zu bestimmten Zeiten angeschlossen sein.
* für automatische Sicherungen möchte ich eine Zeitschaltuhr verwenden, dabei soll weitgehend sichergestellt sein, daß das Backupmedium ordentlich ausgehangen wird, bevor es vom Saft getrennt wird.
* ein verfügbares Medium soll ohne weiteres Zutun meinerseits entsprechend erkannt und benutzt werden.
* Sicherungen sollen alternierend durchgeführt werden, zB. sollen 3 unterschiedleiche Backupsätze benutzt werden, wobei immer der älteste zum aktuellsten wird
* unnötige (nach meiner Festlegung) Verzeichnisse sollen nicht gesichert werden, dazu gehören zB. per "mount --bind" und "ln -s" einghängte Verzeichnisse (die sonst womöglich doppelt- und dreifach gesichert würden), die CIFS Papierkörpe, "lost+found" oder einfach die DS eigenen "@*"-Unterverzeichnisse (Photostation WebGUI Bilder in diversen Größen, Audiostation "@eadir" mit Coverart usw.) mit Informationen die Ich (persönlich) für ein Backup meiner eigentlichen Daten absolut nicht brauche.
* nachträgliches einbinden von weiteren "mounts" soll ohne langwieriges Auswählen (a la DS WebGUI) "selbständig" ausgeschlossen, zusätzlich erstellte Ordner sollen automatisch eingeschlossen werden.
* über den Sicherungsvorgang soll ein brauchbares Protokoll erstellt werden, daß unter anderem einen einigermassen zuverlässigen Überblick über die verbrauchte Zeit enthält, um zB. besser ersehen zu können, wie lange das Backupmedium mindestens verfügbar sein muß, bevor es vom Saft getrennt werden darf.
* zum Vorgang an Sich soll rsync benutzt werden.
Meine Ausgangsbedingungen:
Bei mir läuft
* eine DS109 mit DSM 2.3 (noch) 1118 beta
* IPKG mit (um bei denen zu bleiben die für die Scriptausführung notwendig sind)
- bzip2
- coreutils
- findutils
- grep
* eine 2TB Datenplatte (ca. 500GB belegt)
* eine 1.5TB Backupplatte (eSata, ext3 über DSM eingerichtet)
* eine 1TB Backupplatte (eSata, ext3 über DSM eingerichtet)
* eine 500GB Backupplatte (USB, ext3 über DSM eingerichtet), hauptsächlich für Zwischenbackups und zu Testzwecken
Die verschiedenen Benutzer der DS benutzen teilweise replizierte Verzeichnisse. Um zB. meinem "normalo"-Benutzer alter-Ego Zugriff auf den Inhalt des Admin-Ordners und dessen Verzeichnissen zu geben, wurde der admin-Ordner auf das entsprechende Benutzerverzeichnis gemountet -
Um einen "Download"-Ordner einfach über den jeweiligen Benutzer(home)-Ordner erreichen zu können, wurde der Downloadordner nach dem obigen Muster in das Benutzerverzeichnis eingehangen.
Um die einzelnen Benutzerhomepages (~/www) zentral unterbringen zu können, habe ich diese im "web"-Ordner erstellt (/volume1/web/userhp/benutzer) und anschliessend in das jeweilige "www"-verzeichnis eingehängt.
Um "root" schnell Zugriff auf diverse verteilte Ordner zu ermöglichen, wurden innerhalb "/root" diverse Verzeichnisse gemountet.
Manche Ordner sind bei mir aus diversen Gründen an mehrerern Stellen eingehängt. Dies und die obigen Beispiele führen unter den Bendingungenn des DSM Backup WebGUI dazu, daß ich nicht einfach ein Backup durchführen lassen kann, ohne mir vorher anzusehen was DSM sichern möchte und dies dann evtl. abzuwählen oder zusätzlich anzuhaken, wenn beispielsweise noch Ordner dazukommen.
Weiterhin hat das Backup der DSM bis 2.2 noch das Problem, daß nur die erste Instanz der Ordner aus- oder abgewählt werdern kann. Also kann ich zwar "homes/benutzer" aber nicht "homes/benutzer/www" oder "homes/benutzer/download" wählen. Das wird zwar ab 2.3 etwas freundlicher, aber wenn ich das bei vielen Benutzern im Auge behalten muß, wird es unübersichtlich und nervend.
Dazu kommt natürlich das Problem, daß der DSM dann sowohl "web/userhp/benutzer", "homes/benutzer/download" als auch "homes/benutzer/www" und "download" sichern würde - also zumindest doppelt, weil hier nicht zwischen "mounts" / symlinks und realen ordnern unterschieden wird.
Mein Lösungsansatz:
Was diese "mount --bind"s betrifft: Sinnvollerweise hat man diese Anweisungen ja irgendwo dauerhaft abgelegt, um sie nicht ständig neu eingeben zu müssen.
Ich mache das zum einen (hauptsächlich) über eine "mounts.sh", die in "/root" abgelegt ist und sämtliche von mir eingerichteten Mounts und die dazu notwendigen Verzeichnisse (mkdir, für den Fall der Fälle) enthält, zum Anderen natürlich über die "rc.local".
Man könnte nun über "mount | grep -i "--bind"" die aktuell eingebundenen Verzeichnisse abfragen und weiterverarbeiten, aber bei mir funktioniert das irgendwie nicht wie erwartet, also muß irgendwie anders abgefragt werden um diese Verzeichnisse von der Sicherung auszuschliessen.
Da alle Angaben in der "mounts.sh" und in "rc.local" stehen, nehme ich einfach diese Information, lasse mir rausfiltern, was dort gemountet werden soll und trage diese Ergebnisse dann in die Ausschlußliste ein.
An diese Auschlußliste kann ich jederzeit weitere Kriterien anhängen, beispielsweise Verzeichnisse, welche mit "#recycle" beginnen, oder "lost+found", oder oder oder.
WAS ich Sichern will ist recht einfach festzustellen, zumindest bei mir auf einer DS109, da gibts per Default nur "volume1". Welches Gerät das jedoch ist, muß nicht zwingend immer gleich sein.
Schwieriger wird es, wenn ich feststellen möchte, WOHIN das Backup geschrieben werden soll, bzw. es vom Ziel abhängig zu machen, wie oder was gesichert werden soll.
Um diverse Datenträger EXAKT von einander unterscheiden zu können (evtl. über GUID/UID oder so) fehlen mir noch wichtige Kenntnisse. Deshalb versuche ich bei mir anahnd eines einfachen "fdisk -l" an unterscheid (und grep)-bare Kriterien zu kommen.
In meinem Fall ist es leicht, denn meine Quelle ist das "2000.3" GB Device, meine Ziele sind entweder an "1500." oder "1000." erkennbar.
Nun taucht die Frage auf: Wieso muß ich überhaupt wissen welches Device mein Ziel ist? Wenn ich nur eine Sicherung fahren will, ist das tatsächlich nicht notwendig. Wenn ich aber das Ziel nach der Sicherung entfernen will, muß ich der DS irgendwie sagen, welches Gerät nun bitte Synokonform zu entfernen sei - und das geht (meines Wissens) nur, wenn ich dem Synobefehl das entsprechende Device übergeben kann.
Diese Lösung ist nicht die sicherste, aber die grundsätzliche Unterscheidung reicht für mein kleines System. Andere Konfigurationen, vor allem RAID und Systeme, bei denen das Backupmedium in der Größe dem Datenvolume entspricht, könnte es notwendig sein, andere Kriterien zu wählen. Beispielsweise könnte die exakte Bytegröße abgefragt werden (bei Festplatten gleicher Größe aber unterschiedlicher Hersteller unterschiedet sich die Bytegröße eigentlich immer), oder mittels "dmesg" wird der Plattenname (Hersteller ID oä.) abgefragt, und über die LUN kriege ich raus, welches Device das ist...
Da ich, wie erwähnt, viele viele Dinge noch :wink: nicht weiß, bereitet diese Lösung manch erfahrenem Linuxer wohl arge Kopfschmerzen, aber ich greife gerne auf bessere/einfachere Lösungen zurück, wenn jemand etwas besseres anzubieten hat.
Aus (für mich) aktuellem Anlass mußte ich mich die letzten Wochen tiefer mit dem DS Backup beschäftigen. Hier im Forum habe ich auch diverse Beiträge gelesen, und viele davon hätten gerne alternierende Backups, möglichst auch auf verschiedenen externen Festplatten, die evtl. auch nur zeitweise an der DS aktiv sind.
Soetwas wollte ich auch (zumindest in groben Zügen) und deshalb have ich versucht, MEINE Bedürfnisse erstmal in eine Form zu bringen, die nur noch grundsätzliches Einstellen meinerseits verlangt und ansonsten ohne Benutzereingriff ausgeführt werden kann.
Eins noch vornweg: Ich habe mich dabei explizit NOCH NICHT mit den diversen Datenbanken beschäftigt, dh. ich lasse die Sicherung der MySQL Datenbank und der Photostation (& Blog)-Daten durch die Synology eigene Lösung sichern, das funktioniert wunderbar in Zusammenarbeit mit meiner eigenen Backuplösung.
Was ich möchte:
* eine externe Sicherungsplatte soll nur zu bestimmten Zeiten angeschlossen sein.
* für automatische Sicherungen möchte ich eine Zeitschaltuhr verwenden, dabei soll weitgehend sichergestellt sein, daß das Backupmedium ordentlich ausgehangen wird, bevor es vom Saft getrennt wird.
* ein verfügbares Medium soll ohne weiteres Zutun meinerseits entsprechend erkannt und benutzt werden.
* Sicherungen sollen alternierend durchgeführt werden, zB. sollen 3 unterschiedleiche Backupsätze benutzt werden, wobei immer der älteste zum aktuellsten wird
* unnötige (nach meiner Festlegung) Verzeichnisse sollen nicht gesichert werden, dazu gehören zB. per "mount --bind" und "ln -s" einghängte Verzeichnisse (die sonst womöglich doppelt- und dreifach gesichert würden), die CIFS Papierkörpe, "lost+found" oder einfach die DS eigenen "@*"-Unterverzeichnisse (Photostation WebGUI Bilder in diversen Größen, Audiostation "@eadir" mit Coverart usw.) mit Informationen die Ich (persönlich) für ein Backup meiner eigentlichen Daten absolut nicht brauche.
* nachträgliches einbinden von weiteren "mounts" soll ohne langwieriges Auswählen (a la DS WebGUI) "selbständig" ausgeschlossen, zusätzlich erstellte Ordner sollen automatisch eingeschlossen werden.
* über den Sicherungsvorgang soll ein brauchbares Protokoll erstellt werden, daß unter anderem einen einigermassen zuverlässigen Überblick über die verbrauchte Zeit enthält, um zB. besser ersehen zu können, wie lange das Backupmedium mindestens verfügbar sein muß, bevor es vom Saft getrennt werden darf.
* zum Vorgang an Sich soll rsync benutzt werden.
Meine Ausgangsbedingungen:
Bei mir läuft
* eine DS109 mit DSM 2.3 (noch) 1118 beta
* IPKG mit (um bei denen zu bleiben die für die Scriptausführung notwendig sind)
- bzip2
- coreutils
- findutils
- grep
* eine 2TB Datenplatte (ca. 500GB belegt)
* eine 1.5TB Backupplatte (eSata, ext3 über DSM eingerichtet)
* eine 1TB Backupplatte (eSata, ext3 über DSM eingerichtet)
* eine 500GB Backupplatte (USB, ext3 über DSM eingerichtet), hauptsächlich für Zwischenbackups und zu Testzwecken
Die verschiedenen Benutzer der DS benutzen teilweise replizierte Verzeichnisse. Um zB. meinem "normalo"-Benutzer alter-Ego Zugriff auf den Inhalt des Admin-Ordners und dessen Verzeichnissen zu geben, wurde der admin-Ordner auf das entsprechende Benutzerverzeichnis gemountet -
Code:
mount --bind /volume1/homes/admin/ /volume1/homes/ich/
Um einen "Download"-Ordner einfach über den jeweiligen Benutzer(home)-Ordner erreichen zu können, wurde der Downloadordner nach dem obigen Muster in das Benutzerverzeichnis eingehangen.
Um die einzelnen Benutzerhomepages (~/www) zentral unterbringen zu können, habe ich diese im "web"-Ordner erstellt (/volume1/web/userhp/benutzer) und anschliessend in das jeweilige "www"-verzeichnis eingehängt.
Um "root" schnell Zugriff auf diverse verteilte Ordner zu ermöglichen, wurden innerhalb "/root" diverse Verzeichnisse gemountet.
Manche Ordner sind bei mir aus diversen Gründen an mehrerern Stellen eingehängt. Dies und die obigen Beispiele führen unter den Bendingungenn des DSM Backup WebGUI dazu, daß ich nicht einfach ein Backup durchführen lassen kann, ohne mir vorher anzusehen was DSM sichern möchte und dies dann evtl. abzuwählen oder zusätzlich anzuhaken, wenn beispielsweise noch Ordner dazukommen.
Weiterhin hat das Backup der DSM bis 2.2 noch das Problem, daß nur die erste Instanz der Ordner aus- oder abgewählt werdern kann. Also kann ich zwar "homes/benutzer" aber nicht "homes/benutzer/www" oder "homes/benutzer/download" wählen. Das wird zwar ab 2.3 etwas freundlicher, aber wenn ich das bei vielen Benutzern im Auge behalten muß, wird es unübersichtlich und nervend.
Dazu kommt natürlich das Problem, daß der DSM dann sowohl "web/userhp/benutzer", "homes/benutzer/download" als auch "homes/benutzer/www" und "download" sichern würde - also zumindest doppelt, weil hier nicht zwischen "mounts" / symlinks und realen ordnern unterschieden wird.
Mein Lösungsansatz:
Was diese "mount --bind"s betrifft: Sinnvollerweise hat man diese Anweisungen ja irgendwo dauerhaft abgelegt, um sie nicht ständig neu eingeben zu müssen.
Ich mache das zum einen (hauptsächlich) über eine "mounts.sh", die in "/root" abgelegt ist und sämtliche von mir eingerichteten Mounts und die dazu notwendigen Verzeichnisse (mkdir, für den Fall der Fälle) enthält, zum Anderen natürlich über die "rc.local".
Man könnte nun über "mount | grep -i "--bind"" die aktuell eingebundenen Verzeichnisse abfragen und weiterverarbeiten, aber bei mir funktioniert das irgendwie nicht wie erwartet, also muß irgendwie anders abgefragt werden um diese Verzeichnisse von der Sicherung auszuschliessen.
Da alle Angaben in der "mounts.sh" und in "rc.local" stehen, nehme ich einfach diese Information, lasse mir rausfiltern, was dort gemountet werden soll und trage diese Ergebnisse dann in die Ausschlußliste ein.
An diese Auschlußliste kann ich jederzeit weitere Kriterien anhängen, beispielsweise Verzeichnisse, welche mit "#recycle" beginnen, oder "lost+found", oder oder oder.
WAS ich Sichern will ist recht einfach festzustellen, zumindest bei mir auf einer DS109, da gibts per Default nur "volume1". Welches Gerät das jedoch ist, muß nicht zwingend immer gleich sein.
Schwieriger wird es, wenn ich feststellen möchte, WOHIN das Backup geschrieben werden soll, bzw. es vom Ziel abhängig zu machen, wie oder was gesichert werden soll.
Um diverse Datenträger EXAKT von einander unterscheiden zu können (evtl. über GUID/UID oder so) fehlen mir noch wichtige Kenntnisse. Deshalb versuche ich bei mir anahnd eines einfachen "fdisk -l" an unterscheid (und grep)-bare Kriterien zu kommen.
In meinem Fall ist es leicht, denn meine Quelle ist das "2000.3" GB Device, meine Ziele sind entweder an "1500." oder "1000." erkennbar.
Code:
# fdisk -l
Disk /dev/sda: 2000.3 GB, 2000398934016 bytes
255 heads, 63 sectors/track, 243201 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 310 2490043+ 83 Linux
/dev/sda2 311 375 522112+ 82 Linux swap
/dev/sda3 392 18446744073709527469 18446744073512439293 83 Linux
Nun taucht die Frage auf: Wieso muß ich überhaupt wissen welches Device mein Ziel ist? Wenn ich nur eine Sicherung fahren will, ist das tatsächlich nicht notwendig. Wenn ich aber das Ziel nach der Sicherung entfernen will, muß ich der DS irgendwie sagen, welches Gerät nun bitte Synokonform zu entfernen sei - und das geht (meines Wissens) nur, wenn ich dem Synobefehl das entsprechende Device übergeben kann.
Diese Lösung ist nicht die sicherste, aber die grundsätzliche Unterscheidung reicht für mein kleines System. Andere Konfigurationen, vor allem RAID und Systeme, bei denen das Backupmedium in der Größe dem Datenvolume entspricht, könnte es notwendig sein, andere Kriterien zu wählen. Beispielsweise könnte die exakte Bytegröße abgefragt werden (bei Festplatten gleicher Größe aber unterschiedlicher Hersteller unterschiedet sich die Bytegröße eigentlich immer), oder mittels "dmesg" wird der Plattenname (Hersteller ID oä.) abgefragt, und über die LUN kriege ich raus, welches Device das ist...
Da ich, wie erwähnt, viele viele Dinge noch :wink: nicht weiß, bereitet diese Lösung manch erfahrenem Linuxer wohl arge Kopfschmerzen, aber ich greife gerne auf bessere/einfachere Lösungen zurück, wenn jemand etwas besseres anzubieten hat.