Problemy z komendą Rsync, uprawnienia właściciela i grupy nie ulegają zmianie


28

Próbuję ustawić właściciela i grupę rsync, ale wydaje się, że to nie działa.

To jest polecenie:

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

Pliki synchronizują się poprawnie, ale nie wydaje się, aby zmieniały właściciela i grupę.

Odpowiedzi:


14

Wygląda na to, że działa poprawnie. Użyj --owneri, --groupaby zachować (nie ustawiać) nazwy właściciela i grupy ... co oznacza, że ​​nie chcesz, aby zmieniły się po przeniesieniu.

Jeśli nie skorzystasz z tych opcji, użytkownik i grupa zostaną zmienieni na użytkownika wywołującego na końcu odbierającym. Jeśli chcesz podać innego użytkownika, musisz dodać chownpolecenie do skryptu.

-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...

man rsync


1
Jak mogę zdalnie zmieniać użytkowników i grupy? Przez ssh? Czy możesz mi powiedzieć jak? Mam dostęp root do obu serwerów. Nie chcę używać kluczy ssh, ale powiedz mi wszystkie znane opcje, docenię to. Dzięki za szybką odpowiedź
Arnoldo Bazaldua

Polecenie wyglądałoby ssh root@ip 'chown -R cmsseren:cmsseren /home/serena/public_html2/*'
mniej więcej

Próbowałem, ale nie działało, właściciele i użytkownicy są tacy sami. Po
wydaniu

Działa teraz, problemy z zaporą. Teraz muszę tylko zautomatyzować wprowadzanie hasła do ssh i rsync
Arnoldo Bazaldua

Wyślę to w innym pytaniu, dzięki za pomoc
Arnoldo Bazaldua

61

W wersji 3.1.0 rsync wprowadzono --usermapi --groupmapwspomniany przez Thomasa, ale także opcję wygody --chown, która działa dobrze w twoim scenariuszu.

--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.

Ponadto wymagane są opcje -oi -g. Wykluczenie ich nie spowoduje zaktualizowania odpowiedniego atrybutu, ale nie spowoduje błędu.

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

Zostało to wspomniane pośrednio na stronie podręcznika , która stwierdza, że --chownopcja „jest implementowana przy użyciu --usermapi --groupmapwewnętrznie” oraz:

Dla --usermapopcja ma żadnych skutków, -o( --owneropcja) należy stosować (lub domniemanych), a odbiornik musi być uruchomiony jako super-użytkownika (patrz również --fake-superopcję).

Dla --groupmapopcja ma żadnych skutków, -g( --groupsopcja) należy stosować (lub domniemanych), a odbiornik musi mieć uprawnienia do ustalenia tej grupy.


5
Dlaczego wymagane jest -og? Wydaje mi się to nielogiczne, ale jest również wymagane w moim systemie.
Yai0Phah,

4
@FrankScience Zgadzam się, wydaje się to nielogiczne. To samo pytanie zostało zadane na liście mailingowej rsync . „Sugerowałbym, że dokumenty dla --chowndobrze by wspomnieć o tym --owner( --super) i --groupsą potrzebne” .
TachyonVortex

5

Ostatnia wersja (co najmniej 3.1.1) rsync pozwala określić „zdalną własność”:

--usermap=tom:www-data

Zmienia właściciela tomu na www-data (inaczej PHP / Nginx). Jeśli używasz Maca jako klienta, użyj brew, aby uaktualnić do ostatniej wersji. A na serwerze pobierz źródła archiwów, a następnie „zrób to”!


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.