2016-05-05 32 views
1

Ich habe ein Verzeichnis auf meinem lokalen Rechner namens foo, das eine Datei mit dem Namen document enthält. Der Benutzer und die Gruppe für foo und document sind A:B.Warum ändert dieser rsync-Befehl den Benutzer richtig, aber nicht die Gruppe?

Ich möchte diese Dateien mit Rsync in ein Remote-Verzeichnis remote-dir verschieben. remote-dir enthält andere Verzeichnisse, aber nicht /foo, sodass rsync zum ersten Mal /foo und /foo/document in das Remote-Verzeichnis einführt. Die Dateien innerhalb remote-dir sollten alle einen Benutzer haben: Gruppe J:L. Hier ist, wie das aussieht:

VOR

/foo/   (A:B)  /remote-dir/  (J:K) 
`- document (A:B)   `- other/  (J:L) 
          `- directories/ (J:L) 

ich folgende rsync-Befehl verwendet, um die Übertragung * durchführen:

rsync -rv --super --owner --chown=J:L ./foo/ [email protected]:/remote-dir/foo 

ERWARTET

/foo/   (A:B)  /remote-dir/  (J:K) 
`- document (A:B)   `- other/  (J:L) 
          `- directories/ (J:L) 
          `- foo/   (J:L) 
           `- document (J:L) 

Ich erlebe ct /foo und /foo/document in remote-dir mit einem Benutzer angezeigt: Gruppe J:L.

ACTUAL

/foo/   (A:B)  /remote-dir/  (J:K) 
`- document (A:B)   `- other/  (J:L) 
          `- directories/ (J:L) 
          `- foo/   (J:root) 
           `- document (J:root) 

In Wirklichkeit /foo/foo/document und erscheinen in remote-dir mit einer Benutzergruppe von J:root, root die Gruppe der Root wobei I im rsync Befehl angegeben ([email protected]:[...]).

Nach der man-Seite --chown=J:L entspricht --usermap=*:J --groupmap=*:L, und wie wir sehen können, funktioniert die usermap ordnungsgemäß, aber die groupmap ist nicht.

Mache ich etwas falsch? Irgendwelche falschen Annahmen? Was sollte auf meiner Gesundheitscheckliste sein?

* rsync Optionen erklärt:

  • -r für rekursive
  • --super weil die "Empfänger versucht Super-User-Aktivitäten" (chown)
  • --owner weil chown verwendet --usermap und --groupmap intern, und diese Optionen erfordern --owner zu funktionieren (edit: tatsächlich, das ist falsch. --usermap erfordert --owner, aber --groupmap erfordert eine separate Option --group.)
+0

Abstimmung als Off-Topic (gehört auf [SU]), aber +1 für eine klare Frage, die Forschungsanstrengungen zeigt. –

+0

Oh Gott, in meiner Verwirrung über dieses Thema habe ich vergessen zu überlegen, in welcher SE-Gemeinschaft ich dies veröffentlichen sollte. –

Antwort

0

Der rsync Manpage hat die Antwort.

Ich war mir bewusst dieses ersten Teils:

Für die --usermap Option Wirkung zu haben, die -o (--owner) Option verwendet werden muss (oder implizierte) und der Empfänger müssen als Super-User laufen (siehe auch --fake-super-Option).

Aber ich wusste nicht, dass auch ich brauchte -g (--groupmaps):

Für die --groupmap Option Wirkung haben, die -g (-Gruppen) muss die Option (oder impliziert) verwendet werden, und der Empfänger muss über Berechtigungen zum Festlegen dieser Gruppe verfügen.