Debian mit BTRFS - Snapshots und Backup

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
scientific
Beiträge: 3022
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Debian mit BTRFS - Snapshots und Backup

Beitrag von scientific » 04.09.2016 23:57:57

Hi Leute!

Ich hab hier eine umfassende Installation mit BTRFS und hab mir dazu ein snapshot- und Backup-Skript in Python geschrieben.
Zusätzlich hab ich einige dazugehörige systemd-Unis gebaut, welche die Snapshots und auch das Backup auf eine externe Platte komfortabel automatisieren.
Das Setup hab ich von SuSEs Snapper übernommen (hab lange nach einer sinnvollen Geschichte gesucht, wie ich Rollups eines älteren Snapshots so gestalten kann, dass mein Home, aber auch die Mails von dovecot trotzdem aktuell sind...).

Ich hab mir auch ein kleines Skript geschrieben, welches mir die Installation in deinem chroot mit debootstrap vorbereitet, damit die entsprechenden btrfs-Subvolumes schon vor der Installation erstellt und gemountet werden, damit ich anschließend ein passendes Setup (Partitionierung kann man ja mit btrfs nicht mehr wirklich sagen... :) )

Außerdem gibt es eine (zwei) systemd-Units, die es mir erlauben, mit

Code: Alles auswählen

systemctl start mkbackup-activate@dev-sdb2.service
(insofern /dev/sdb2 die Partition der externen HD ist, auf welche die Backups geschrieben werden sollen) die entsprechenden Units für systemd und die passenden udev-Rules zu erzeugen (und mit

Code: Alles auswählen

systemctl start mkbackup-deactivate@dev-sdb2.service
auch wieder zu entfernen), wenn die externe Platte eingesteckt wird.

Wenn die Units/Rules mit der systemd-unit erzeugt und aktiviert wurden, wird automatisch ein Snapshot vom gesamten System gemacht und auf die Platte übertragen.
Über ein Config-File in /etc/ das bei nichtbestehen mit Default-Werten automatisch erzeugt wird, kann das Backup gesteuert werden.

Außerdem hab ich noch ein FUSE-Filesystem geschrieben, welches mir den Zugriff auf die Homes der Snapshots (sowohl auf der internen Platte, als auch der externen) in einem Verzeichnis ~/backup mit vereinfachten Dateinamen (heute timestamp, gestern timestamp, vorgestern timestamp, datum timestamp) und der Ergänzung ob local oder extern in einem einzigen Verzeichnis erlaubt.

Ihr könnt all das hier finden:
https://github.com/xundeenergie/mksnapshot

Ich bin noch nicht fertig, da das ganze ein Work in Progress ist... :) So quasi mein Hobby.

Ich hab das FUSE-Filesystem noch nicht mit der externen Platte testen können - müsste aber funktionieren.
Geplant ist noch eine Extension für den Gnome-Desktop in man erstens sieht, ob gerade ein Snapshot/Backup erstellt/geschrieben wird, wo man bei einer neu eingesteckten externen Platte auswählen kann, ob diese für Backups herangezogen werden soll (und welche Partition davon), und welche Backups/Snapshots (stündlich, täglich, wöchentlich...) gemacht werden sollen, und welche davon auf die externe Platte geschrieben werden sollen, und wieviel jeweils aufgehoben werden sollen. (Also das, was über das Config-File eingestellt wird)
Aber dazu muss ich mich noch in die Programmierung von Gnome-Extensions einarbeiten. Das wird noch ein wenig dauern.

Besteht Interesse an einem Wikiartikel darüber?
Ich muss für Github noch eine genauere Anleitung zur Installation und Funktion schreiben. Das hat mich noch nicht gefreut... :roll:

Würd mich freuen, wenn jemand Interesse an diesem Projekt zeigt.

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

r4pt0r
Beiträge: 1237
Registriert: 30.04.2007 13:32:44
Lizenz eigener Beiträge: MIT Lizenz

Re: Debian mit BTRFS - Snapshots und Backup

Beitrag von r4pt0r » 05.09.2016 09:43:14

Schönes Projekt - Tools für eine wirkliche integration bzw nutzung der Features im normalen 'Systemalltag' fehlen BTRFS ja noch komplett.
scientific hat geschrieben:(hab lange nach einer sinnvollen Geschichte gesucht, wie ich Rollups eines älteren Snapshots so gestalten kann, dass mein Home, aber auch die Mails von dovecot trotzdem aktuell sind...).
Ich hatte mir für ZFS einige Shellscripte gebaut um sowas ähnliches wie boot-environments von FreeBSD mit debian zu verwirklichen (aus Zeitmangel leider nie wirklich ausgereift bzw mittlerweile läuft sowieso FreeBSD...). Da debian recht viel config-/userdaten mit systemdaten durcheinanderwirft bzw configs in pfaden liegen wo sie eigentlich nicht hingehören (sollten), ist das leider ziemlich umfangreich/umständlich wenn man wirklich das OS getrennt von user/configdaten per snapshot zurücksetzen will. FreeBSD ist da deutlich angenehmer, da hier strikter gebrauch von /usr/local/... gemacht wird und der installer die logische trennung per ZFS datasets bereits automatisch vonimmt.
Evtl kannst du dir ja auch ein paar Ideen bei boot environments und beadm holen, auch speziell was die strukturierung des Dateisystems betrifft.
beadm ist ausführlich dokumentiert und besteht praktisch nur aus einem shellscript, sollte sich also relativ leicht portieren lassen (so leicht es mit den noch recht wirren/unfertigen BTRFS-tools eben machbar ist...).

Hier noch der Link zu beadm bei github:
https://github.com/vermaden/beadm
HOWTO.htm ist der initiale post aus diesem Forumsthread: https://forums.freebsd.org/threads/31662/ Hier wird anhand von mehreren Praxisbeispielen die Implementierung recht schön vorgestellt. Zwar alles auf ZFS bezogen, aber im prinzip geht es um Snapshots, was sich entsprechend auch auf BTRFS übertragen lässt.

scientific
Beiträge: 3022
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Debian mit BTRFS - Snapshots und Backup

Beitrag von scientific » 06.09.2016 20:54:39

Danke für die Tipps.
Werd ich mir noch näher anschauen.

Noch eine Frage... Mein FUSE-Filesystem stellt ja den Zugriff auf 2 Pfade her.
Wenn in einem der Verzeichnisse eine Datei dazukommt (es wird ein neuer Snapshot erstellt) aktualisiert Nautilus das leider nicht selbst. Ich muss ihn mit F5 manuell anstoßen.
Wie könnte ich das automatisch aktualisieren lassen?
Dbus? Wie geht das?
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Benutzeravatar
smutbert
Beiträge: 8350
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Debian mit BTRFS - Snapshots und Backup

Beitrag von smutbert » 08.09.2016 13:26:55

hier hat sich offentsichtlich jemand an die Arbeit gemacht das in fuse zu verwirklichen, das das wohl tatsächlich nicht kann (oder konnte? - es stammt vom April):
https://github.com/libfuse/libfuse/wiki ... y-and-FUSE

hier beantwortet vermutlich derselbe Entwickler ein paar Fragen (2012):
http://fuse.996288.n3.nabble.com/Curren ... d9262.html

scientific
Beiträge: 3022
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Debian mit BTRFS - Snapshots und Backup

Beitrag von scientific » 14.09.2016 17:34:25

Ja, daa klingt ganz danach.
Nur hab ich grad überhaupt keinen Plan, ob und wie ich das in meinem Projekt verwenden könnte...
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

scientific
Beiträge: 3022
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Debian mit BTRFS - Snapshots und Backup

Beitrag von scientific » 27.09.2016 20:31:28

Hat übrigens zufällig jemand detaillierteres Wissen über Gnome-Extensions und Zeit und Lust mich dabei zu unterstützen?

Ich hab eine Vorstellung, wie die passende Extension aussehen und funktionieren müsste, und zwei extensions die man "nur" kombinieren müsste. Aber genau daran scheitere ich grad grandios... . [SMILING FACE WITH SMILING EYES]
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Antworten