rsync ustaw właściciela grupy, uprawnienia grupy

10

Chcę używać rsync do przesyłania plików z mojego komputera do zdalnego systemu Linux. Niezależnie od własności grupy pliku lokalnego chcę ustawić te wartości po stronie zdalnej.

Gdybym był na zdalnym systemie Linux, mógłbym utworzyć katalog i ustawić własność i uprawnienia jako:

mkdir my_directory
chown :my_group my_directory
chmod 775 my_directory

Jeśli utworzę katalog lokalnie, a następnie użyję rsync (pamiętaj, że nie mam mojej grupy lokalnie), robię:

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

To działa, ale nie mogę wymyślić, jak ustawić właściciela grupy za pomocą rsync. Jeśli to zrobię chmod g+s dest, mój_katalog ma poprawnego właściciela grupy, ale wszystkie pliki w nim mają niepoprawnego właściciela grupy.

ChrisInEdmonton
źródło
Cześć @ChrisInEdmonton, czy znalazłeś sposób, aby to w końcu zadziałało? Mam teraz do czynienia z tym samym problemem: uruchamiam cygwin do rsync plików z systemu Windows do Linux-a, ale nie mogę ustawić poprawnego identyfikatora grupy wysyłanych nowych plików: rsync -avz --delete --exclude "*.git" --chmod=ug=rwx,o=rx /cygdrive/d/projx/ [email protected]:/var/prox/Pliki lądują jako John: John zamiast John: Projx ( gdzie projx to nazwa grupy)
Jan
1
Właśnie znalazłem rsync 3.1 zawiera --groupmap=*:group-name'.. zaraz po tym, jak opublikowałem ha.
Jan

Odpowiedzi:

8

Właśnie w tej chwili szukam sposobu, aby to zrobić w operacji rsync, a nie w kolejnej operacji. Chcę, aby niektóre pliki nie były czytelne dla całego świata i przypisywały grupy, ograniczając w ten sposób dostęp do procesów serwera zdalnego w tej grupie. Ale nie znalazłem żadnego.

Jedyne, co mogę sobie wyobrazić, to:

  1. użyj --delay-updates, aby umieścić zdalne pliki w bardziej atomowym, natychmiastowym przypisaniu operacji
  2. g + rwx, o + rwx w opcji rsync --chmod

a następnie uruchom:

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

źródło
Tak, myślę, że właśnie to zrobimy. Dziwię się, że nie ma sposobu, abyście mogli to zrobić tylko za pomocą rsync, ale hej.
ChrisInEdmonton,
6

Myślę, że w twoim poleceniu brakuje flagi -p.

--chmod

Ta opcja nakazuje rsync zastosować jeden lub więcej ciągów „chmod” oddzielonych przecinkami do uprawnień plików w przesyłaniu. Wynikową wartość traktuje się tak, jakby to były uprawnienia dostarczone przez stronę wysyłającą do pliku, co oznacza, że ​​ta opcja może wydawać się nie mieć wpływu na istniejące pliki, jeśli --perms nie jest włączone .

h3.
źródło
1
-pFlaga jest domyślnie włączone jako część -aopcji (archiwum).
Anthony Geoghegan