Rsync 및 파일 소유권 - 서버에서 소유권을 변경하지 마세요.

Rsync 및 파일 소유권 - 서버에서 소유권을 변경하지 마세요.

그래서 내 개인용 컴퓨터에서 웹 서버를 동기화하고 있는데 파일 권한에 문제가 있습니다.

두 명령을 모두 시도했지만 어느 것도 내가 원하는 것을 제공하지 않습니다.

rsync -a --no-o --no-g --exclude='*.json' --exclude='venv/*' --exclude='*.sh' /var/www/mysite.com/ [email protected]:/var/www/mysite.com

rsync -a --exclude='*.json' --exclude='venv/*' --exclude='*.sh' /var/www/mysite.com/ [email protected]:/var/www/mysite.com

여기에 내가 원하는 것과 실제로 일어나는 일에 대한 설명이 있습니다. 앞에서 언급한 두 명령을 사용하여 동일한 효과를 얻습니다. 상황은 다음과 같아야 합니다. 인덱스는 nginx를 실행하는 www-data 사용자가 읽을 수 있고 관리자가 쓸 수도 있습니다.

-rw-r-----  1 admin-user www-data 127 M D mm:ss index.html

rsync를 실행한 후 실제로 일어나는 일은 다음과 같습니다.

-rw-r-----  1 admin-user admin-user 128 M D mm:ss index.html

이로 인해 웹 사이트에 액세스할 때 분명히 404가 발생하며 현재 rsync를 실행한 후 권한을 수정하기 위해 스크립트를 실행해야 합니다.

그래서 내가 원하는 것은 rsync를 실행한 후에 서버에 있는 파일의 GID가 변경되지 않는 것입니다. 다른 그룹으로 설정해야 하는 다른 프로그램에서 사용하는 다른 파일이 있기 때문에 GID를 수동으로 지정하는 솔루션도 작동하지 않습니다. 기본적으로 rsync는 파일의 데이터를 수정해야 하지만다른 건 건드리지 마세요.

내가 로그인한 사용자가 파일에 쓸 수 있으므로 슈퍼유저 권한도 필요하지 않습니다.

OS: Ubuntu 16.04 Server and Desktop
rsync --version (home computer): 3.1.2  protocol version 31
rsync --version (server): 3.1.1  protocol version 31

답변1

rsync가 동일한 그룹으로 업데이트된 파일을 생성하려면 원래 할당된 관리자가 해당 그룹의 일부여야 합니다.

해결책은 실행하는 것입니다.

usermod -aG www-data admin-user

웹 서버에서.

방금 시도해봤는데 잘 작동하는 것 같습니다. rsync에 다음 옵션을 사용하고 있습니다.

rsync -a --no-o --exclude='*.json' --exclude='venv/*' --exclude='*.sh' /var/www/site/ admin-user@remote:/var/www/site

이것은 원래 의견에서 @Thomas가 제안한 것입니다.

관련 정보