これは私がやろうとしていることです:
rsync -rvl --chmod=ug=rwX,o=rX test /var/www
そして私がそれをした後、私が得る結果はここにあります:
drwxr-xr-x
(実際にはdrwxr-sr-xですが、それはおそらく重要ではありません...ですか?)
これは明らかに私が望んでいるものではありません。グループに書き込み権限を与えたいのですが、何らかの理由で、rsyncコマンドがそれらに設定していません。
誰かが何かアイデアを持っているのはなぜですか?構文に間違いはありますか?それが役に立ったら、OSXからLinux(Debian)に転送します。
pdate:また、役立つ場合は、umaskと入力すると0002が表示されます。これは問題ではありません。
--chmod
はsendingサイドのアクセス許可をオーバーライドしますが、-p
または--perms
も指定しない場合、宛先のデフォルトが使用されます(つまり、--chmod
は無視されます)。
From man 1 rsync :
-chmod
このオプションは、rsyncに、1つ以上のコンマ区切りの「chmod」文字列を転送中のファイルの許可に適用するように指示します。結果の値は、送信側がファイルに提供した権限であるかのように扱われます。つまり、--permsが有効になっていない場合、このオプションは既存のファイルに影響を与えないように見えます。
次のように、--chmod
を-p
オプションとともに使用する必要があります。
$ rsync -avz --chmod=o-rwx -p tata/ tata2/
そしてここに完全なテストがあります:
$ mkdir tata
$ mkdir tata2
$ cd tata
$ touch tyoto
$ touch tiuti
u=rw, g=r, o=r
$ ls -l
total 0
-rw-r--r-- 1 romain users 0 fév 16 11:48 tiuti
-rw-r--r-- 1 romain users 0 fév 16 11:48 tyoto
$ cd ..
$ rsync -avz tata/ tata2/
$ ls -l tata2
total 0
-rw-r--r-- 1 romain users 0 fév 16 11:48 tiuti
-rw-r--r-- 1 romain users 0 fév 16 11:48 tyoto
--chmod=o-rwx -p
$ rsync -avz --chmod=o-rwx -p tata/ tata2/
$ ls -l tata2
total 0
-rw-r----- 1 romain users 0 fév 16 11:48 tiuti
-rw-r----- 1 romain users 0 fév 16 11:48 tyoto
追加する必要があると思います--perms
(別名-p
)。マンページからの引用:
このオプションがオフの場合、権限は次のように設定されます。
...
新しいファイルは、「通常の」許可ビットがソースファイルの許可に設定され、受信ディレクトリのデフォルトの許可(受信プロセスのumask、または宛先ディレクトリのデフォルトACLで指定された許可)でマスクされ、特別な許可ビットは、新しいディレクトリがその親ディレクトリからsetgidビットを継承する場合。
私はあなたの宛先システムに022のような典型的なumaskがあり、それがグループ書き込みビットがrsyncによって設定されるのを妨げていると思います。残念ながら--chmod
は、umaskがどのように適用されるか、適用されないかについては言及していません。