質問: CentOSの `cp -a` で指定ディレクトリ以下を全コピーしたら、パーミッションが一部変更されてしまいました。 具体的には、画像ディレクトリ内を再帰的に777していたのですが、一部が変更になったみたいでエラーが発生してしまったため、再度777へ変更し直しました。 `cp -a` でコピーすると、元ディレクトリ内容と全く同じになると思っていたので、かなりびっくりしました。 ※色々作業していたので、もしかしたら何か勘違いしているかもしれません **質問** ・`cp -a` と `cp -p` の違いは? ・`cp -a`のhelpを見たら、`--archive same as -dR --preserve=all` と書いていたので、`cp -p` を全て兼ねるのでしょうか? ・それとも `cp -ap` などと書くのでしょうか? **最終的にやりたいこと** ・元ディレクトリと全て同じ内容でコピーしたいです ・構成も内容もパミッションもタイムスタンプも ※何もない場所へコピーする前提。コピー内容は重複しない、もしあれば全上書き
回答: によれば `-a` は `-dpR` と等価、とあります。 オイラは先輩にディレクトリ構造ごとコピーの際には `cp` を使うな、 `tar` または `cpio` を使え、と教わりました。 `/home/alice/projects/zulu` 以下をまるごと `/home/bob/zulu` に複写するには (書き込み先に書き込み権限がある前提で) ``` (cd /home/alice/projects && tar cf - zulu) | (cd /home/bob && tar xvf -) ``` `cpio` の例は他の人にお任せで。 今はもっといい方法があるんでしたっけ?