Christian Garbs schrieb am Sat, 24 Sep 2022 19:21:35 -0000 (UTC):
> Mahlzeit!
>
> Peter Scholz <
Peter_...@vodafonmail.de> wrote:
>
>> - meine (einfache) Grundidee:
>>
>> Ich kopiere einfach mein /etc auf einen USB-Stick und das war es
>> eigentlich auch schon, was man an Arbeit investieren muss :-)
>>
>> Man könnte hier natürlich auch professionelle Programme wie backintime
>> oder kbackup nehmen, um solche "Verzeichnis-Snapshots" zu erstellen,
>> aber ich mag es eigentlich lieber recht einfach.
>
> Was bedeutet in dem Fall "einfach"? Was für ein Dateisystem ist auf
> dem USB-Stick?
>
> Gerade unter /etc solltest Du die korrekten Dateiattribute und
> -besitzer behalten, das kannst Du also nicht einfach auf eine
> FAT32-Partition kopieren (da wäre z.B. ein tar-Archiv nötig).
Ich habe meinen Etc-Usb-Stick mit dem selben Datei-System formatiert,
wie die Mutter-Partitionen der Betriebssysteme. Formatieren und
Kopieren auf einen Usb-Stick sind zwei einfache Arbeitsschritte. Die
Dateiattribute sind also kein Problem.
> Außerdem solltest Du den Inhalt des Sticks ggf. verschlüsseln,
> da stehen ja durchaus auch Passwörter und ähnliches drin.
Ja, verschlüsseln geht auch. Aber ich bin noch nicht am Ende meiner
Tests. Final kann man noch jede Menge anderer Komplizierungen einbauen.
>> Ein USB-Stick als Datenträger erscheint mir sicher, jedenfalls
>> sicherer als wenn ich meine sensiblen /etc-Daten irgendwo in die
>> Weltgeschichte uploade, obwohl ein solcher Upload mit etckeeper
>> nicht zwingend sein soll - wenn ich das richtig verstanden habe.
>
> etckeeper kann verschiedene Versionsverwaltungen nutzen, per se legt
> es das dazugehörige Repository aber erstmal nur lokal an (für git weiß
> ich das, bei den anderen gehe ich stark davon aus).
Ok, dann muss man nur die Git-Befehle lernen.
> Ob und wie Du das ggf. remote verteilen willst, bleibt Dir überlassen.
Lieber nicht.
> Ich bin mir nicht ganz sicher, wie gut git sich Dateiattribute und
> -owner merkt, aber etckeeper führt zur Sicherheit selber noch eine
> Dateiliste mit genau diesen Informationen und legt die mit im
> Repository ab. Außerdem speichert git keine leeren Verzeichnisse,
> die merkt sich etckeeper auch in so einer Nebenbuchführung.
Git kann wohl keine Dateiattribute, das erledigt wohl etckeeper.
Ok, was etckeeper so alles kann und ob ich das wirklich brauche, sehe
ich wohl nur, wenn ich es testweise installiere.
> Du könntest also das Repository auf dem Stick ablegen (oder dahin
> kopieren), dann ginge das auch mit FAT32 :-) Verschlüsselung fehlt
> aber noch.
Wenn ich es testweise installiere, sehe ich ja wie tief es ins System
eingreift und ob es sich sauber wieder deinstallieren lässt.
Ich habe einige Skripte rund um apt programmiert, die mir seit Jahren
das Leben sehr vereinfachen und sogar auf Derivaten (z.B. frugalen
Mx-Linux-Installationen) laufen und jetzt sogar teilweise auf meinem
Dual-Boot-Smartphone mit Ubuntu-Touch :-)
Etckeeper macht mir das möglicherweise alles kaputt.
Ja, das glaube ich gerne. Ich bin mir da aber nicht sicher, ob ich das
dann wirklich auch alles brauche. Eine konkrete Vorstellung davon
bekomme ich wohl nur wenn ich testweise installiere.
>> Die Verwendung des USB-Sticks bietet mir in meinem kleinen Heimnetzwerk
>> zudem den Vorteil, dass mir auch durch einfaches Einstöpseln des
>> USB-Sticks, Veränderungen an meinen anderen Debian-Rechnern (die alle
>> mit meinem speziellen Window-Environment einheitlich bestückt sind)
>> immer in Bezug auf meinen einheitlichen "General-Snapshot" angezeigt
>> werden.
>
> Das wäre ein Use-Case, an den ich nicht mal gedacht hätte.
Auf meinen Multi-Boot-Rechnern ist aber genau dieses wichtig.
> Hier ist jeder Rechner insoweit "unique", dass ich niemals das ganze
> /etc von einem zum anderen Kopieren würde. Vielleicht mal Teile,
> z.B. /etc/nftables (und dann editiere ich die Portliste) oder
> vielleicht der cron.d-Eintrag für mein Backupscript.
Meine Rechner sind hardware-mäßig alle sehr "unique", produktiv
software-mäßig aber alle "Debian-einheitlich". Einer der wesentlichen
Gründe, warum ich damals von Manjaro nach Debian migriert bin.
Die Migration hat damals (jedes Paket händisch und einzeln tageweise)
insgesamt mehre Monate gedauert und ich habe es im nach hinein nicht
bereut! Erst später habe ich erkannt (bei meinen 64bit-Migrationen und
der Portierung auf einen neuen Rechnen), was für eine enorme
Arbeitserleichertung apt-clone ist.
> Du kannst, falls Du mit etckeeper und z.B. git arbeitest, darüber auch
> die Konfigurationen übers Netzwerk abgleichen. Es wäre sogar sowas
> möglich wie "ich habe lokal diese drei Änderungen, die will ich
> behalten, aber zusätzlich die neueste Änderung vom master-Server
> reinziehen".
>
> Stichworte: Upstream, Pull, Merge mit git
Ich habe da im Augenblick leider keine konkrete Vorstellung davon.
Bei mir kämen da noch eventuell geclonte Test-Installationen hinzu. Ich
sollte mir das tatsächlich einmal testweise installieren.
>> Überdies bin ich nicht daran gehindert in "komplizierten" Fällen z.B.
>> bei geclonten Betriebssystem-Varianten z.B. mit Testing-/Unstable-
>> Systemen schnell und einfach weitere "etc-Snapshots" zu erstellen, um
>> komplexere Veränderungen dieser Spezial-Systeme flexibel nachvollziehen
>> zu können. Das gilt natürlich auch für den von dir angesprochenen Fall
>> der "großen" Änderungen an den Konfigurationsdateien (z.B. bei
>> Release-Upgrades). Paket-Versionswechsel in Debian-Stable sind eher
>> selten und würde ich während der Release-Laufzeit eher tolerieren
>> wollen, da es sich nur um ganz wenige Fälle handeln sollte. Für
>> Desktop-User spielt die Musik eigentlich sowieso im Home-Verzeichnis.
>
> Das wäre auch mit etckeeper kein Problem: Branches oder halt einzelne
> Repositories (ein Rechner wird ja entweder stable oder testing sein,
> nicht beides).
Nach dem ich jetzt gesehen habe, wie schön stabil auch Debian-Unstable
läuft, kann ich leider nicht ausschließen, dass ich neben Stable,
Stable-Dirty, Testing jetzt auch Unstable für meine Tests von diversen
Betriebssystem-Partitionen auf dem selben Rechner nutzen werde.
>> - Problem der (eigentlichen) Urspungsfassung
>>
>> Da ich aber erst jetzt auf die Idee gekommen bin Veränderungen an
>> meinem /etc-Verzeichnis verfolgen zu wollen, habe ich alle bereits
>> statt gehabten Veränderungen verpasst und mein etc-Snapshot spiegelt
>> natürlich nur den aktuellen Stand wieder. Das Problem sollte sich aber
>> bei einer Neu-Installation von etckeeper in dieser Weise auch so
>> stellen.
>
> Genau. Das macht den ersten Commit, wenn es installiert wird, davor
> gab es nichts™.
Dieser Initialisierungs-Zeitpunkt wäre dann möglicherweise auch bei
einem Clonen und Upgraden zu einer Test-Installation kein großes
Problem.
...oder hast bei deinem Release-Upgrades mit Ubuntu für jede neue
Release-Version deines Ubuntu auch immer eine neue Initialisierung
deines Etckeeper vorgenommen?
Ja, so eine "Release-Konfigurations-Vorlagedatei" je Paket wäre die
Lösung :-)
Ja, ich liebe immer diese hervorragenden Konfigurations-Dateien, mit so
verständlichen Kommentaren, dass man keine weitere Hilfen oder Manpages
mehr lesen muss.
>> Bei einem Paket-Versionswechsel gibt es 2 Möglichkeiten. Die
>> Debian-Update-Routine hat festgestellt: Sie benutzen eine von der
>> Standardfassung abweichende Konfiguration - 1) beibehalten?
>> 2) überschreiben?
>>
>> Wenn der Maintainer gut ist, sollte es eigentlich so laufen:
>
> Ich glaube, da kann der Maintainer wenig kaputtmachen, der Mechanismus
> ist ganz weit unten in dpkg eingebaut. Wenn er eine Datei in /etc als
> conffile markiert hat, kommt die Frage ganz von alleine und das
> anlegen der .dpkg-new bzw. .dpkg-old passiert auch durch
> Standard-Mechanismen.
Leider ist da wohl jedes Paket etwas anders konstruiert und wir sind -
zumindest bei Debian - von einer Standardisierung weit entfernt.
>> Wie sind da deine praktischen Erfahrungen mit deinen einzelnen
>> Versionierungen speziell an dieser Stelle mit etckeeper?
>
> Da habe ich tatsächlich eine: etckeeper ignoriert absichtlich
> *.dpkg-new und *.dpkg-old. Das habe ich das erste Mal bemerkt, als
> ich mein Skript zum Automatischen mergen dieser Dateien das erste Mal
> habe laufen ließ. Dann habe ich was am Skript korrigiert, von /etc
> die Vorgängerversion eingespielt, wollte das Skript nochmal laufen
> lassen und habe in die Röhre geguckt, weil die *.dpkg-new und
> *.dpkg-old nicht wie erwartet wieder da waren.
interessant, habe so was auch befürchtet.
> Ich finde das Verhalten unintuitiv, überraschend und nicht gut.
> Ich habe die /etc/etckeeper/update-ignore.d/01update-ignore editiert
> und innerhalb von writefile() unter dem dpkg-Zweig aus den beiden
> ignore-Anweisungen für "*.dpkg-*" und "*.ucf-*" comments gemacht.
Ich fürchte auch, dass das nicht gut ist und werde das in jedem Fall
weiter beobachten, insbesondere laufend in meinem derzeitigen Bookworm.
>> Sollte man vielleicht aus diesem Grund mit versionierten
>> Sicherungskopien arbeiten oder gleich etckeeper verwenden?
>
> Dieser Grund wäre für mich klar eine Entscheidung für etckeeper:
Ja, bleibt nur die Frage nach etwaigen unerwünschten Nebenwirkungen :-)
> Man kann bei Bedarf bequem im Repository "surfen" und zurückliegende
> Änderungen nochmal nachvollziehen (und mit einer viel höheren
> zeitlichen Auflösung, als wenn man z.B. seine monatlich angelegten
> Backups rauskramt - die man dann ja auch erstmal entschlüsseln und
> entpacken muss usw.)
>
> Kostet ja auch nichts - einfach das Paket installieren und arbeiten
> lassen, da muss man ja prinzipiell nichts weiter für tun, es schreibt
> erstmal mit.
Ich mache eine Etckeeper-Test-Installation - allein schon, um erst
einmal durch diese dahinter liegenden Problematiken besser durch zu
blicken :-)
> (das einzige, woran man vielleicht denken muss: wenn man ein
> hochgeheimes Passwort irgendwo gelöscht hat, steht es weiterhin in
> der Historie des Repositories. aber mit Backups ist das ja auch
> nicht anders.)
Auch aus solchen Gründen sind die einfachsten Lösungen immer die besten.
> Grundsätzlich würde ich aber immer auch zusätzlich versionierte
> Sicherheitskopien machen. In meinem Fall sind das z.B. wöchentliche
> Backups (mit Datum im Dateinamen) von _allen_ relevanten Daten (nicht
> nur /etc). Mit PAR2-Absicherung bei Lesefehlern, verschlüsselt und
> möglichst auf externen Systemen gelagert ;-)
Ohne eine neue vollständige "Release-Konfigurations-Update-
Vorlagedatei", die der Maintainer bei jedem Release-Update immer
mitliefern müsste, wären aber alle "neuen Release-Update-Features" für
eine komfortable Nach-Nutzung möglicherweise verloren. Auch zusätzliche
versionierte Sicherheitskopien alter Dateien helfen da nichts und man
müsste wieder umständlich in aktuellen Hilfetexten und aktuellen
Manpages zumindest nach den neuen Features suchen.
Grundsätzlich können zusätzliche versionierte Sicherheitskopien aber
sinnvoll sein. Genau wie das von Tim angesprochene Problem "Ich
habe häufig keine Erinnerung mehr, warum ich vor x Jahren
einmal ein Paket installiert habe oder eine Konfigurations-
datei geändert." Bisher habe ich mir hierfür immer Notizen gemacht,
weil man z.B. nach 10 Jahren oftmals tatsächlich nicht mehr nachvoll-
ziehen kann, warum, wo und wie man bestimmte Konfigurationen damals in
welchen Situationen geändert hat. Hier könnten an solchen Stellen des
Betriebssystem auch versionierte Readme-Dateien hilfreich sein.
> Das hat dann nichts mehr mit "was hat sich an /etc gegenüber letzte
> Woche geändert?" zu tun, sondern soll gegen "Festplatte kaputt" oder
> "Rechner brennt/Haus brennt" helfen - in dem Fall bringt etckeeper ja
> nichts.
Richtig, aber welche Daten brauche ich tatsächlich? Auch aus diesem
Grunde werde ich mir Etckeeper einmal näher ansehen.
Vielleicht reicht mir ja auch schon ein einfaches:
sudo cruft -d "/etc"
Auch das ließe sich ja einfach archivieren und als versionierter
Snapshot mit anderen Installationen oder nach Updates/Upgrades
vergleichen und um zum eigentlichen Thema zurückzukehren: für den Fall
der Migration des Betriebssystems.
--
Gruß Peter