Postsync und symbolische Links

Guten Morgen,

ich habe einige alte Rechner, bei denen ich im BIOS kein Wake-On-Lan aktivieren kann, obwohl die Netzwerkkarte das unterstützt. Nach Änderungen in der /etc/rc.local und /etc/default/halt klappt es aber (siehe auch https://wiki.ubuntuusers.de/Wake_on_LAN/).

Wir haben nur ein Image und diese Rechner stehen in verschiedenen Räumen. Jetzt wollte ich das ganze per postsync verteilen und damit ich nicht für jeden Raum die beiden Dateien anlegen muss, habe ich sie mit symbolischen Verknüpfungen angelegt. In Raum 1 liegen die “Orginale” und in Raum 2 bis 4 entsprechende Symlinks die auf die Dateien in Raum 1 zeigen.

Leider scheint das postsync Skript damit nicht klarzukommen:

- getting patchfiles
receiving incremental file list
skipping non-regular file "xenial/b012"
skipping non-regular file "xenial/a013/etc/rc.local"
skipping non-regular file "xenial/a013/etc/default/halt"

Gibt es einen Weg dieses Problem zu lösen, ohne für jeden Raum die Dateien redundant anzulegen?

vG Stephan

Moin Stephan!

Ist es das was du suchst?

Patchklassen für Postsync-Scripte

Beste Grüße

Thorsten

Hi Thorsten,

vielleicht sehe ich den Wald vor lauter Bäumen nicht, aber ich weiß nicht, ob sich das damit lösen lässt, denn das habe ich ja bereits: ein Xenial-Image für alle unsere Rechner. Pro Image ist nur eine Patchklasse möglich, oder?

Ich suche einfach nur einen Weg, wie ich verschiedene Räume / Rechner ein paar Dateien unterschieben kann, ohne diese Datei mehrmals mit gleichem Inhalt anlegen zu müssen. Geht das?

vG

Hi Stephan!

Da ich das nicht selber verwende, kann ich das nur so wiedergeben wie ich das verstehe:

Zitat aus der Doku:

Diese Patches werden nach folgendem Schema angewendet:

im Unterverzeichnis .../common liegende Patches erhalten alle Rechner
im Unterverzeichnis  .../r100 liegende Patches erhalten nur die Rechner in Raum r100
im Unterverzeichnis .../r100-pc01 liegende Patches erhält nur der PC01 in Raum r100 die Dateien.

Unterhalb dieser Verzeichnisse sind alle Anpassungen so abzulegen, wie diese dann auf den betreffenden Clients angewendet werden sollen - bsp.:

.../common/etc/cups/cups.conf

Ich erweitere das Beispiel für die cups.conf mal so wie ich es verstehe für den Rechner r100-pc01

…/common/r100/r100-pc01/etc/cups/cups.conf

VG

Thorsten

Hallo Thorsten,

nein, die Ordner sind alle auf der gleichen Ebene:

  • /var/linbo/linuxmuster-client/xenial/common
  • /var/linbo/linuxmuster-client/xenial/raum1
  • /var/linbo/linuxmuster-client/xenial/raum1-pc01

vG Stephan

Hast du es auch schon mit einem Hardlink versucht? Evtl klappt es ja damit?

https://krausens-online.de/hard-softlinks-teil-1-theorie-laaaangweilig/

Hallo Stephan!

Aber wie soll ich denn den Satz verstehen:

Spezifischere Patches überschreiben die allgemeineren.

Warum sind sie redundant. Gleicher Inhalt? Nee, kann nicht sein. :confounded:

Gruß Thorsten

Schau dir mal das Beispiel unter der Grafik an (v.a. Epoptes).

Doch, wenn ich die gleiche Datei nur im Raum A und B, aber nicht in C haben möchte, muss ich folgende Struktur haben:

  • …/raum-a/meineDatei
  • …/raum-b/meineDatei

vG Stephan

Hej Stephan!

Ohne jetzt 9malGluch sein zu wollen: Bei A und B und nicht C wäre für mich

in common A und B
in raum-c dann das für C

Aber bestimmt hast du mehr als drei Räume. :wink:

Da ich jetzt dein Problem verstehe und auch Postsync (dank an deine Adresse) glaube ich es könnte wohl nur mit den von Michael genannten Hardlinks gehen.

Beste Grüße

Thorsten

Das wäre toll, wenn es so gehen würde, aber alles was in common ist, geht in alle Räume / auf alle Rechner, die die Patchklasse haben. Wenn ich was in C lege, kann ich maximal etwas überschreiben, was durch common auf dem Rechner gelandet ist.

Ich probiere das mal mit den Hardlinks und melde mich.

vG

Ok, ich glaube ich habe einen Weg gefunden. Zuerst einmal scheint es verschiedene Versionen des postsync-Skripts zu geben:

Welches davon ist das aktuelle? Ich geh mal davon aus, dass das auf Github aktuell ist.

Bei der Githubversion ist beim rsync-Befehl noch die Option -l mit drin, d.h. symlinks werden als solche kopiert. Das ist praktisch, wenn man innerhalb des Images auf eine Datei verweisen will (z.B. Desktop-Verknüpfung). In meinem Fall bringt mir die Option aber nichts, da ich ja auf einen Ordner / Datei im /cache/ verweise und er die Datei im Image dann nicht findet (klar).

Lösung:
Statt -l einfach -L verwenden. Damit wird beim Holen der Datei per rsync der symbolische Link aufgelöst und die entsprechende Datei im Zielordner angelegt. Die symbolischen Links müssen absolute Pfadangaben in der Quelle (also auf dem LMN-Server) haben! Damit hat es geklappt.

Eine Frage bleibt noch…
Beide Optionen, d.h. großes oder kleines -l / -L haben je nach Anwendungsfall ihre Berechtigung. Was soll Standard für die LMN sein? Welcher Anwendungsfall wird in Zukunft überwiegen?

vG Stephan