Frage Rsync-Befehlsprobleme, Besitzer- und Gruppenberechtigungen ändern sich nicht


Ich versuche, Besitzer und Gruppe über zu setzen rsync und es scheint nicht zu funktionieren.

Dies ist der Befehl:

sudo rsync -rlptDvz --owner=cmsseren --group=cmsseren /home/serena/public_html/ -e ssh root@ip:/home/cmsseren/public_html2/

Die Dateien werden korrekt synchronisiert, scheinen aber den Besitzer und die Gruppe nicht zu ändern.


25
2017-12-31 20:33


Ursprung




Antworten:


Es klingt wie es richtig funktioniert. Benutzen --owner und --group zu erhalten (nicht festgelegt) die Eigentümer- und Gruppennamen ... was bedeutet, dass Sie nicht möchten, dass sie sich nach der Übertragung ändern.

Wenn Sie diese Optionen nicht verwenden, werden der Benutzer und die Gruppe auf der Empfängerseite zum aufrufenden Benutzer geändert. Wenn Sie einen anderen Benutzer angeben möchten, müssen Sie einen hinzufügen chown Befehl an Ihr Skript.

-o, --owner
    This option causes rsync to set the owner of the destination file to be 
    the same as  the source file, but only if the receiving rsync is being run 
    as the super-user (see also the --super and --fake-super options). Without 
    this option, the owner of new and/or transferred files are set to the invoking 
    user on the receiving side...

-g, --group
    This option causes rsync to set the group of the destination file to be the same as 
    the source file. If the receiving program is not running as the super-user (or if
    --no-super was specified), only groups that the invoking user on the receiving side
    is a member of will be preserved. Without this option, the group is set to the default
    group of the invoking user on the receiving side...

Mann rsync


13
2017-12-31 20:46



Wie kann ich remotely Benutzer und Gruppe chown? Über ssh? Kannst du mir bitte sagen wie? Ich habe Root-Zugang für beide Server. Ich möchte keine SSH-Schlüssel verwenden, aber sag mir alle Optionen, die du kennst, ich werde es zu schätzen wissen. Danke für die schnelle Antwort - Arnoldo Bazaldua
Der Befehl würde etwa so aussehen: ssh root@ip 'chown -R cmsseren:cmsseren /home/serena/public_html2/*' - user3150166
Ich habe es versucht, aber nicht funktioniert, die Besitzer und Nutzer sind die gleichen. Nach dem Befehl sagt es: stdin: ist nicht ein tty - Arnoldo Bazaldua
Es funktioniert jetzt, Firewall-Probleme. Jetzt muss ich nur noch die Passworteingabe für ssh und rsync automatisieren - Arnoldo Bazaldua
Ich werde dies in anderer Frage veröffentlichen, danke für Ihre Hilfe - Arnoldo Bazaldua


Version 3.1.0 von rsync eingeführt die --usermap und --groupmap erwähnt von Thomas, aber auch die Bequemlichkeitsoption --chown, die für Ihr Szenario gut funktioniert.

--chown=USER:GROUP
    This option forces all files to be owned by USER with group GROUP.
    This  is  a  simpler  interface  than  using  --usermap  and  --groupmap directly,
    but  it  is implemented using those options internally, so you cannot mix them.
    If either the USER or GROUP is empty, no mapping for the omitted user/group will
    occur.  If GROUP is empty, the trailing colon may be omitted, but if USER is
    empty, a leading colon must  be supplied.

    If you specify "--chown=foo:bar, this is exactly the same as specifying
    "--usermap=*:foo --groupmap=*:bar", only easier.

Auch die -o und -g Optionen sind erforderlich. Wenn sie ausgeschlossen werden, wird ihr jeweiliges Attribut nicht aktualisiert, aber es wird kein Fehler erzeugt.

rsync -og --chown=cmsseren:cmsseren [src] [dest]

Dies wird indirekt in der Manpage, welche stellt fest, dass die --chown Option "wird mit --usermap und --groupmap intern "und:

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

Für die --groupmap Option, irgendeine Wirkung zu haben, die -g (--groups) Option muss verwendet werden (oder impliziert),   und der Empfänger muss Berechtigungen haben, um diese Gruppe zu setzen.


53
2018-01-05 23:24



Warum sind -og erforderlich? Es scheint mir unlogisch, aber es ist auch auf meinem System erforderlich. - Frank Science
@FrankScience Einverstanden, es scheint unlogisch. Die gleiche Frage war gefragt auf der rsync Mailingliste. "Ich würde vorschlagen, dass die Dokumente für --chown würde gut tun, das zu erwähnen --owner (--super) und --group wird gebraucht". - TachyonVortex


In der letzten Version (mindestens 3.1.1) von rsync können Sie den "Remote-Eigentümer" angeben:

--usermap=tom:www-data

Ändert den Besitz an www-data (aka PHP / Nginx). Wenn Sie Mac als Client verwenden, verwenden Sie brew, um auf die letzte Version zu aktualisieren. Und auf deinem Server, lade Archivquellen herunter, dann "mach" es!


4
2017-12-03 10:14