rsyncコマンドでパーミッションエラーが表示される

rsyncコマンドを利用してコピーすると以下のようにエラーがでます

$ rsync -avz --delete --rsync-path="sudo rsync" 192.168.0.1:/var/www/html/ /backup/html/
receiving incremental file list
rsync: failed to set times on "/backup/html/.": Operation not permitted (1)

rsync: failed to set times on “[ディレクトリ]": Operation not permitted (1) とエラーになります。
–rsync-path="sudo rsync" でsudoコマンドでrsyncしているので、パーミッション関係はそのままいきそうですが、エラーとなっています。但し、コピーはできています。

エラーの原因ですが、コピー先の/backup/html/に追加・変更するファイルやディレクトリのオーナー・グループを変更する際に変更できずにエラーとなっているようです。

rsync [-a] のオプションは、[-rlptgoD] のオプションと同じです。-rlptgoD は以下のようなオプションとなります

  • -r: ディレクトリを再帰的に同期する。
  • -l: シンボリックリンクをコピーする。
  • -p: ファイルのパーミッションを保持する。
  • -t: ファイルのタイムスタンプを保持する。
  • -g: ファイルのグループを保持する。
  • -o: ファイルのオーナーを保持する。
  • -D: デバイスファイル、特殊ファイル、およびFIFOファイルを保持する。

今回は、オーナー・グループを変更する際にエラーとなっているので、オーナー・グループ関連の「-g, -o」を除いて、「-O」のファイルの最後の更新日時を同期するオプションを追加して、「-a」の代わりに「-rlptDO」としてrsyncすればできると思うので、以下のようにしました

$ rsync -rlptDOvz --delete --rsync-path="sudo rsync" 192.168.0.1:/var/www/html/ /backup/html/

また、ネットの検索上位でよく見かけた解決方法の「-a」のオプションを「-rlOt」の場合のオプションの場合は、以下のようなオプションの意味となります。こちらの場合は、「-p」がないので、ファイルのパーミッションを保持されません

  • -r: ディレクトリを再帰的に同期する。
  • -l: シンボリックリンクをコピーする。
  • -p: ファイルのパーミッションを保持する。
  • -O: ファイルの最後の更新日時を同期する。
  • -t: ファイルのタイムスタンプを保持する。
rsync -rlOtcv --delete 192.168.0.1:/var/www/html/ /backup/html/

 

 

スポンサーリンク

0
0