Synchronisieren Sie das Linux-Verzeichnis /etc/

Synchronisieren Sie das Linux-Verzeichnis /etc/

Ich habe eine virtuelle Maschine mit Linux (Ubuntu-Server), die als Prototyp für andere Maschinen verwendet wird. Manchmal nehme ich Änderungen am Prototypsystem vor und möchte diese Änderungen auf einer anderen Maschine importieren.

Ich kenne mich mit Puppet, cfengine und FAI aus, möchte aber etwas Einfaches, beispielsweise ein Rsync-Skript, das bei Bedarf über SSH funktioniert.

Das Hauptziel ist das Verzeichnis /etc/. Aber ich möchte einige private Dateien nicht synchronisieren, z. B. /etc/passwd /etc/shadow usw. Ich kenne nicht alles davon.

Gibt es Tipps für meine Aufgabe? Vielleicht hat jemand ein solches rsync-Skript.

Antwort1

Eine einfache Lösung könnte darin bestehen, Git einzurichten.

  • Richten Sie in Ihrem /etcVerzeichnis ein Git-Repository ein.
  • Richten Sie eine Ignorierdatei ein, um Dinge auszuschließen, die Sie nicht auf das Remote-System migrieren möchten.
  • Fügen Sie alles, was nicht ignoriert wird, zu Ihrem Repository hinzu.
  • Ziehen Sie bei Bedarf während der Produktion aus dem Entwicklungs-Repository.

Antwort2

Sie kennen die Antwort bereits. rsync kann alles, was Sie möchten, es läuft über SSH, wenn Sie es möchten, und es kann problemlos Dateien ignorieren, die Sie nicht synchronisieren möchten:

rsync -avP source:/etc/ /etc/ --exclude-from list-of-files-to-exclude

Und fügen Sie der Datei einfach eine Liste der auszuschließenden Dateien hinzu list-of-files-to-exclude. Beispiel:

$ cat list-of-files-to-exclude
/passwd
/shadow

Natürlich würde ich trotzdem dringend eine Versionskontrolle und etwas Ausgereifteres wie Puppet empfehlen. Und achten Sie darauf, dass Sie sich um Dateieigentümerschaft und Berechtigungen kümmern.

verwandte Informationen