chmodとchownのスクリプトをワンライナーで

6月14日のエントリで、バックアップディレクトリのファイルを"--reference"オプションで参照して、tarで展開したファイルやディレクトリのパーミションやオーナを調整するスクリプトを書きました。
このtar展開やその他環境調整はchefで行っているため、chefのレシピを適用してさらにこのスクリプトを実行するのは二度手間なので、chefのレシピ中で調整することに。
上記スクリプトを直接chefのscriptセクションに書いてもいいんですが、ちょっと冗長な感じがするので、ワンライナーで書き換え。
こんなコマンドになりました。

    code <<-EOH
      tar -zxvf /tmp/#{tarball}
      tar -ztvf /tmp/#{tarball} | awk '{print $6}' | xargs -I{} sh -c 'chmod --reference /home/foo_bak/{} /home/foo/{} ; chown --reference /home/foo_bak/{} /home/foo/{}'
    EOH

tar -ztvfでファイルのリストを作成して、xargsで展開。chownとchmodの2つのコマンドを実行するために、xargsではshを実行してその中でchownとchmodを実行。