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/
権限が必要です。750
rsync
答え2
この回答私を続けてください--rsync-path=PROGRAM
オプション:
--rsync-path=PROGRAM
rsyncを起動するためにリモートコンピュータで実行するプログラムを指定するには、これを使用します。デフォルトのリモートシェルのパスにない場合に
rsync
よく使用されます(例--rsync-path=/usr/local/bin/rsync
:)。気づく
PROGRAM
rsync
シェルの助けを借りて実行されるため、通信に使用される標準入力と標準出力を破壊しない限り、実行したいすべてのプログラム、スクリプト、またはコマンドシーケンスが可能です。トリッキーな例は、
--relative
このオプションで使用するリモートシステムに別のデフォルトディレクトリを設定することです。たとえば、rsync -avR --rsync-path="cd /a/b && rsync" host:c/d /e/
だから私はこれしかできないようです:
rsync -a --rsync-path='umask 0022 && rsync' ...
...デフォルトumask
(または実際にどのrsync
リモートコール前の前提条件:-)