rsyncで作成されたターゲットディレクトリのファイルモードを制御できますか?

rsyncで作成されたターゲットディレクトリのファイルモードを制御できますか?

directory-to-be-created次のコマンドでファイルモードビットを制御したいと思いますrsync

rsync -a ... <remote-user>@<remote-host>:/some/existing/path/directory-to-be-created/

名前が示すように、ディレクトリはまだ存在せず、rsync忠実に作成する必要があります。しかし、、私が知る限りいつもこれは順守されますか?<リモートホスト>デフォルト設定ではumask--chmod=...私が理解できない注文では他のことをすることはできません...

これで、欠落している宛先ディレクトリを作成するためのファイルモードを設定できますが、それではどうすればよいですか?

答え1

rsyncこの機能はデフォルトではサポートされていませんが、ファイルシステムを使用できますACL/some/existing/path/以下に、新しく作成されたディレクトリに特定の権限セットがあることを確認してください。たとえば、

$ setfacl -dm u::rwx,g::rx,o::r /some/existing/path/

以下に新しく作成されたディレクトリには、手動または転送/some/existing/path/権限が必要です。750rsync

答え2

この回答私を続けてください--rsync-path=PROGRAMオプション:

--rsync-path=PROGRAM

rsyncを起動するためにリモートコンピュータで実行するプログラムを指定するには、これを使用します。デフォルトのリモートシェルのパスにない場合にrsyncよく使用されます(例--rsync-path=/usr/local/bin/rsync:)。

気づくPROGRAMrsyncシェルの助けを借りて実行されるため、通信に使用される標準入力と標準出力を破壊しない限り、実行したいすべてのプログラム、スクリプト、またはコマンドシーケンスが可能です。

トリッキーな例は、--relativeこのオプションで使用するリモートシステムに別のデフォルトディレクトリを設定することです。たとえば、

rsync -avR --rsync-path="cd /a/b && rsync" host:c/d /e/

だから私はこれしかできないようです:

rsync -a --rsync-path='umask 0022 && rsync' ...

...デフォルトumask(または実際にどのrsyncリモートコール前の前提条件:-)

関連情報