rsync Gruppenbesitzer festlegen, Gruppenberechtigung

10

Ich möchte rsync verwenden, um Dateien von meinem Computer auf ein entferntes Linux-System zu übertragen. Unabhängig vom Gruppenbesitz der lokalen Datei möchte ich diese Werte auf der Remote-Seite festlegen.

Wenn ich mich auf dem Remote-Linux-System befände, konnte ich das Verzeichnis erstellen und den Besitz und die Berechtigungen wie folgt festlegen:

mkdir my_directory
chown :my_group my_directory
chmod 775 my_directory

Wenn ich das Verzeichnis lokal erstelle und dann rsync verwende (denken Sie daran, ich habe my_group nicht lokal), mache ich Folgendes:

rsync -ae ssh --chmod=ug+rw,Dug+rwx my_directory remoteserver:dest

Das funktioniert, aber ich kann nicht herausfinden, wie der Gruppenbesitzer über rsync festgelegt wird. Wenn ich a mache chmod g+s dest, hat my_directory den richtigen Gruppeneigentümer, aber alle darin enthaltenen Dateien haben den falschen Gruppeneigentümer.

ChrisInEdmonton
quelle
Hallo @ChrisInEdmonton, haben Sie am Ende einen Weg gefunden, diese Arbeit zu machen? Ich bin im Moment mit dem gleichen Problem konfrontiert. Ich führe cygwin aus, um Dateien von Windows auf eine Linux-Box zu rsyncieren, kann aber nicht die richtige Gruppen-ID für neue Dateien festlegen, die gesendet werden: rsync -avz --delete --exclude "*.git" --chmod=ug=rwx,o=rx /cygdrive/d/projx/ [email protected]:/var/prox/Die Dateien landen als john: john anstelle von john: projx ( wo projx der Name der Gruppe ist)
John
1
Ich habe gerade gefunden, dass rsync 3.1 enthält --groupmap=*:group-name'.. direkt nachdem ich ha gepostet habe.
John

Antworten:

8

Genau in dieser Minute suche ich nach einer Möglichkeit, dies in der rsync-Operation selbst zu tun, im Gegensatz zu einer nachfolgenden Operation. Ich möchte, dass einige Dateien nicht weltweit lesbar sind und eine Gruppe zuweisen, wodurch der Zugriff auf die Remoteserverprozesse innerhalb dieser Gruppe eingeschränkt wird. Aber ich habe keinen gefunden.

Ich kann mir nur Folgendes vorstellen:

  1. Verwenden Sie --delay-updates, um die Remote-Dateien atomarer und sofortiger zuzuweisen
  2. g + rwx, o + rwx in der Option rsync --chmod

und dann ausführen:

ssh remoteserver chgrp -R {groupname} /my/dest/folder/* && \
chmod -R o-rwx /my/dest/folder/*

quelle
Ja, ich denke, das werden wir tun. Ich bin überrascht, dass Sie oder ich dies auf keinen Fall nur mit rsync finden könnten, aber hey.
ChrisInEdmonton
6

Ich denke, das Flag -p fehlt in Ihrem Befehl.

--chmod

Diese Option weist rsync an, eine oder mehrere durch Kommas getrennte "chmod" -Strings auf die Berechtigung der Dateien in der Übertragung anzuwenden. Der resultierende Wert wird so behandelt, als wären es die Berechtigungen, die die sendende Seite für die Datei angegeben hat. Dies bedeutet, dass diese Option keine Auswirkungen auf vorhandene Dateien zu haben scheint, wenn --perms nicht aktiviert ist .

h3.
quelle
1
Das -pFlag ist implizit als Teil der -aOption (Archiv) enthalten.
Anthony Geoghegan