それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

rsync でコピー先のパーミッションを統一する

個人ファイルを共有サーバーにrsync転送していて、転送先では共有777 にしたいんだけど

rsync はバックアップ時にパーティションが維持されるのはいいけれど、維持されるのが困ることも多い。 かと言ってパーティション維持を外すとumaskやsetguid が必要になって不便。

たんに共有サーバーに同期しているだけなので、0777でいいんです。

同期したいけど、パーミッションは要らない。

共有サーバーに同期するだけだから、パーミッションは簡単でいい。

--chmod オプションを使う。

chmod オプションをを使うと、転送先のファイルのパーミッションを設定できて便利。

rsync --chmod=u+rwx,g+rwx,o+rwx src dest

指定する方歩はchmod コマンド分かってたらだいたい同じ。

まとめて設定するなら a 使う

rsync --chmod=a+rwx src dest

ファイルとディレクトリでパーミッションを変えたい

ディレクトリとファイルではパーミッションの意味がちょっと違うじゃん? xの意味とか、r の意味とか。

chmod オプションにはディレクトリにも対応できるらしい

rsync --chmod=Da+x src dst

すでにあるファイルにはどうする?

コピー先にファイルが有る場合は、chmodオプションをの範囲外なので、--perm を使うと便利

勿論のことだけど -p フラグにも注意

rsync -rl --chmod=a+rwx src dest だとだめでした
rsync -prl --chmod=a+rwx src dest

でちゃんと 777 になりました。

rsync は奥が深い

ちなみに chmod の書式は

chmod a+x  ファイル名 ## で allユーザーに x 追加です.

数字はシンタックスエラーなるので、こう書く

次の記述はSyntax Errorになります。

rsync --chmod=777  ## これはsyntax Error

こう書きます。

rsync --chmod=F644,D775

2019-01-25 追記

chmod 777 について書いた。

参考資料

http://webos-goodies.jp/archives/51213844.html