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
/etc
Verzeichnis 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.