Gedankenexperiment: git init auf dem Root-Verzeichnis

Smalltalk
Antworten
Benutzeravatar
paedubucher
Beiträge: 856
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Gedankenexperiment: git init auf dem Root-Verzeichnis

Beitrag von paedubucher » 28.11.2016 21:14:28

Was passiert eigentlich, wenn man folgendes macht:

Code: Alles auswählen

# cd /
# git init
Könnte man sich damit ein allumfassendes System-Recovery-Tool bauen? Vielleicht müsste man /dev zu .gitignore hinzufügen. Aber was wäre z.B. mit /proc? Könnte man dadurch den genauen Zustand des Rechners konservieren, oder ist so etwas gar nicht möglich, zumal auch git ein Prozess mit einem Status ist?
Nur ein kleines Gedankenexperiment Noch traue ich mich nicht, es auszuführen. :wink:
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

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

Re: Gedankenexperiment: git init auf dem Root-Verzeichnis

Beitrag von smutbert » 28.11.2016 21:32:36

Ich kenn mich mit git so gut wie nicht aus, aber ich nehme an du willst einfach das komplette System in einem git-Repo speichern?

Um die virtuellen Dateisystem loszuwerden - neben devtmpfs bzw. /dev und proc gibt es ja auch noch sysfs, mehrere tmpfs, fuse,… - könntest du das /-Dateisystem und alle weiteren gewünschten ein weiteres Mal irgendwo unter /mnt mounten und von dort sichern.
So mache ich das schon lange, wobei ich das mit den btrfs-Subvolumes und Snapshots besonders bequem finde.

Allumfassend ist es aber trotzdem nicht - es fehlen Dinge wie Partitionstabellen, MBR und bei uefi-Systemen der Booteintrag der Firmware. Das ist aber nichts, was sich nicht wieder leicht herstellen ließe.
Außerdem muss man berücksichtigen, dass man so auch Dateien sichert, die "offen" sind und möglicherweise gerade geschrieben werden. Es gibt also keine Sicherheit, dass alle Dateien in einem konsistenten Zustand sind (zB die Paketdatenbank während einer Installation oder eines Updates).

Benutzeravatar
paedubucher
Beiträge: 856
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Re: Gedankenexperiment: git init auf dem Root-Verzeichnis

Beitrag von paedubucher » 29.11.2016 15:35:17

smutbert hat geschrieben:Ich kenn mich mit git so gut wie nicht aus, aber ich nehme an du willst einfach das komplette System in einem git-Repo speichern?
Eigentlich will ich gar nichts, ich hatte nur diesen Einfall, und habe darüber nachgedacht, was das ganze bewirken könnte, bzw. welche Probleme dabei auftreten könnten.
Um die virtuellen Dateisystem loszuwerden - neben devtmpfs bzw. /dev und proc gibt es ja auch noch sysfs, mehrere tmpfs, fuse,… - könntest du das /-Dateisystem und alle weiteren gewünschten ein weiteres Mal irgendwo unter /mnt mounten und von dort sichern.
So mache ich das schon lange, wobei ich das mit den btrfs-Subvolumes und Snapshots besonders bequem finde.
Das wäre dann ein konsistenter Snapshot, ja?
Allumfassend ist es aber trotzdem nicht - es fehlen Dinge wie Partitionstabellen, MBR und bei uefi-Systemen der Booteintrag der Firmware. Das ist aber nichts, was sich nicht wieder leicht herstellen ließe.
Außerdem muss man berücksichtigen, dass man so auch Dateien sichert, die "offen" sind und möglicherweise gerade geschrieben werden. Es gibt also keine Sicherheit, dass alle Dateien in einem konsistenten Zustand sind (zB die Paketdatenbank während einer Installation oder eines Updates).
Danke für die Erläuterungen!
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

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

Re: Gedankenexperiment: git init auf dem Root-Verzeichnis

Beitrag von smutbert » 29.11.2016 22:41:00

paedubucher hat geschrieben:[…]
Das wäre dann ein konsistenter Snapshot, ja?
Wenn ein laufendes System gesichert wird, können trotzdem Dateien geöffnet sein. Selbst wenn man vor dem Backup einen read-Only Snapshot des Systems anlegt und den sichert, könnte der Snapshot gerade während eines Schreibzugriffs erstellt worden sein und damit irgendwelche unvollständig geschriebene Änderungen, also Inkonsistenzen enthalten, aber man kann auch versuchen das zu vermeiden:

Läuft ein Dienst der wichtige Daten speichert zB ein Datenbankserver wie Debianmysql-server kann man den Dienst vor dem Beginn des Backups beenden oder man kümmert sich getrennt um die Sicherung der Datenbank.

Ebenfalls könnte man versuchen zu vermeiden, dass Benutzer während des Backups Dokumente oder andere Dateien bearbeiten.

Wenn man noch darauf verzichtet während des Backups Updates auszuführen oder Pakete zu (de-)installieren sollte nicht mehr allzu viel schiefgehen können.
Bei einem typischen Desktopsystem ohne besondere Dienste wie Datenbankservern, das regelmäßig gesichert wird, muss man im Endeffekt meist gar nichts unternehmen. Ist zufällig gerade irgendein Dokument offen, oder ein PDF oder ein Download unvollständig geschrieben, dann wird die Datei eben beim nächsten Backup korrekt gesichert - mehrere Backupgenerationen sollte man ja sowieso immer behalten, weil man Fehler nicht unbedingt sofort bemerkt.

Benutzeravatar
schorsch_76
Beiträge: 2543
Registriert: 06.11.2007 16:00:42
Lizenz eigener Beiträge: MIT Lizenz

Re: Gedankenexperiment: git init auf dem Root-Verzeichnis

Beitrag von schorsch_76 » 30.11.2016 12:11:46

git zeichnet keine uid/gid auf. Ein checkout würde dann die Rechte nicht mehr richtig setzen

http://unix.stackexchange.com/questions ... ip-on-pull
.

Benutzeravatar
gehrke
Beiträge: 151
Registriert: 02.01.2015 09:15:41

Re: Gedankenexperiment: git init auf dem Root-Verzeichnis

Beitrag von gehrke » 30.11.2016 12:23:37

Ich mache das schon länger so, allerdings nicht allumfassend, sondern nur für /etc. Hat mir schon mehrfach geholfen und kostet fast nichts.
http://www.youtube.com/watch?v=PpUrMk3g_og (Angriff auf die Freiheit von Ilija Trojanow / Juli Zeh) - let’s encrypt

Liffi
Beiträge: 2306
Registriert: 02.10.2004 01:33:05

Re: Gedankenexperiment: git init auf dem Root-Verzeichnis

Beitrag von Liffi » 30.11.2016 13:16:18

gehrke hat geschrieben:Ich mache das schon länger so, allerdings nicht allumfassend, sondern nur für /etc. Hat mir schon mehrfach geholfen und kostet fast nichts.
Mit etckeeper ist es sogar sehr günstig ;-).

Antworten