Probleme mit Rsync-Befehlen, Besitzer- und Gruppenberechtigungen ändern sich nicht


28

Ich versuche über Eigentümer und Gruppe festzulegen rsyncund 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, aber der Besitzer und die Gruppe scheinen sich nicht zu ändern.

Antworten:


14

Es klingt wie es richtig funktioniert. Verwenden Sie --ownerund --group, um die Eigentümer- und Gruppennamen beizubehalten (nicht festzulegen). Dies bedeutet, dass Sie nicht möchten, dass sie sich nach der Übertragung ändern.

Wenn Sie diese Optionen nicht verwenden, werden Benutzer und Gruppe auf der empfangenden Seite in den aufrufenden Benutzer geändert. Wenn Sie einen anderen Benutzer angeben möchten, müssen Sie chownIhrem Skript einen Befehl hinzufügen .

-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


1
Wie kann ich Benutzer und Gruppen fernbedient anzeigen? Über ssh? Könnten Sie 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. Vielen Dank für die schnelle Antwort
Arnoldo Bazaldua

Der Befehl würde ssh root@ip 'chown -R cmsseren:cmsseren /home/serena/public_html2/*'
ungefähr

Ich habe es versucht, aber es hat nicht funktioniert, die Besitzer und Benutzer sind gleich. Nachdem der Befehl ausgeführt wurde, heißt es: stdin: ist kein 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 einer anderen Frage posten, danke für Ihre Hilfe
Arnoldo Bazaldua

61

Version 3.1.0 von rsync eingeführten --usermapund --groupmaperwähnte von Thomas, sondern auch die Bequemlichkeit Option --chown, die gut für Ihr Szenario 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.

Außerdem sind die Optionen -ound -gerforderlich. Wenn Sie diese ausschließen, wird das entsprechende Attribut nicht aktualisiert, es wird jedoch kein Fehler ausgegeben.

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

Dies wird indirekt in der Manpage erwähnt , die besagt, dass die --chownOption "über --usermapund --groupmapintern implementiert wird ", und:

Damit die --usermapOption wirksam wird, muss die Option -o( --owner) verwendet (oder impliziert) werden, und der Empfänger muss als Superuser ausgeführt werden (siehe auch die --fake-superOption).

Damit die --groupmapOption wirksam wird, muss die Option -g( --groups) verwendet (oder impliziert) werden, und der Empfänger muss über Berechtigungen zum Festlegen dieser Gruppe verfügen.


5
Warum ist -og erforderlich? Es scheint mir unlogisch, aber es ist auch auf meinem System erforderlich.
Yai0Phah

4
@FrankScience Einverstanden, es scheint unlogisch. Dieselbe Frage wurde auf der rsync-Mailingliste gestellt . Msgstr "Ich würde vorschlagen, dass die Dokumente für --chowndas erwähnen --owner( --super) gut tun und --groupbenötigt werden" .
TachyonVortex

5

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

--usermap=tom:www-data

Ändert den Besitz von Tom in WWW-Daten (auch bekannt als PHP / Nginx). Wenn Sie Mac als Client verwenden, führen Sie mit brew ein Upgrade auf die letzte Version durch. Laden Sie auf Ihrem Server Archivquellen herunter und "machen" Sie es dann!


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.