Rsyncとファイルの所有権 - サーバー上の所有権を変更しないでください。

Rsyncとファイルの所有権 - サーバー上の所有権を変更しないでください。

だから私のパソコンでWebサーバーを同期していますが、ファイル権限に問題があります。

両方のコマンドを試しましたが、どちらも私が望むものを提供しません。

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

ここに私が望むものと実際に何が起こっているのかについての説明があります。前述の2つのコマンドを使用して同じ効果を得ます。状況は次のとおりです。インデックスは、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

これにより、Webサイトにアクセスすると明らかに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

Webサーバーから。

試してみましたが、うまくいくようです。 rsyncには次のオプションを使用しています。

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

これは元のコメントで@ Thomasが提案したものです。

おすすめ記事