cp --parentsでパスごとコピーする
デプロイ用のファイルとかをコピーしてるとパス付きでまるっとコピーしたくなることがあると思うんだけど、そういう時は--parentsを使うとよい。
状況としてはこんな感じ。
$ tree hoge hoge └── fuga ├── bar.txt ├── foo.txt └── piyo.txt ←これだけコピーしたい 1 directory, 3 files
piyo.txtが更新されたのでこのファイルだけデプロイ対象として持っていきたい。
hoge以下全部持っていくのならcp -R hoge rel-20110628
とかでまるっとコピーすればいいけど、foo.txtとbar.txtは巻き込みたくない。
普通にコピーすると……
$ cp -v hoge/fuga/piyo.txt rel-20110628 `hoge/fuga/piyo.txt' -> `rel-20110628/piyo.txt'
$ tree rel-20110628 rel-20110628 └── piyo.txt 0 directories, 1 file
こんな感じでpiyo.txtがrel-20110628にコピーされる。ですよねー。
まぁ当たり前といえば当たり前。
で、--parentsを付けると
$ cp --parents -v hoge/fuga/piyo.txt rel-20110628 hoge -> rel-20110628/hoge hoge/fuga -> rel-20110628/hoge/fuga `hoge/fuga/piyo.txt' -> `rel-20110628/hoge/fuga/piyo.txt'
$ tree rel-20110628 rel-20110628 └── hoge └── fuga └── piyo.txt 2 directories, 1 file
こうなる。コピー元のパスがそのままコピーされる。