背景
shellスクリプトでディレクトリのコピーとかやりますよね。
$ cp -r ./src ./dst
こうすると、以下のようになります。
$ tree
root
├── dst
│ └── text.txt
└── src
└── text.txt
では、srcが変更されたので、dstも更新しましょう。
$ cp -r ./src ./dst
$ tree
root
├── dst
│ ├── src
│ │ └── text.txt
│ └── text.txt
└── src
└── text.txt
・・・
一回目のコマンドは、srcというフォルダをコピーしてdstというフォルダに変更する処理だったのですが、二回目以降はsrcというフォルダをdst下にコピーする処理になってしまっています。
対策
コピーコマンドの書き方をちょいと変えます。
$ cp -r ./src/. ./dst
$ tree
root
├── dst
│ └── text.txt
└── src
└── text.txt
つまり、srcというフォルダの中にあるすべてのデータをdst下にコピーする、というコマンドにします。
dstが無ければつくってくれますので、こちらを活用するようにしましょう。
追記
-T
オプションをつけて、以下のようなコードにしても同じ動きになるようです。
$ cp -rT ./src/. ./dst
以上です。よろしくお願いいたします。