rsyncでエラーが出たけどコピーはできてる
Jenkinsで成果物(artifact)をrsyncでコピーしようと思ったらエラーでJOBが失敗
$ rsync -acv --delete _site/ www.example.com:/var/www/html/.
エラーは、
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.0]
とか、
rsync: failed to set times on "/var/www/html/.": Operation not permitted (1)
など。
- おそらくコピーしているユーザが/var/www/html以下のパーミッションかオーナーを変えるときに怒られているのだろう。
- でも、パーミッションもオーナーもちゃんと変わっているようにみえるのだが。
- rootでやるのもなんかヤダし。
対応
- ぐぐったらrsyncオプション変えるというのがあった。
$ rsync -rlOtcv --delete _site/ www.example.com:/var/www/html/.
- これで上手くいきました。
-a
は-rlptgoD
と等価なので-p
パーミッション維持、-g
グループ情報維持、-o
オーナー情報維持、-D
デバイス再作成を落として、-O
ディレクトリのタイムスタンプを保持しないを付けて実行してます。