LoginSignup
5

More than 5 years have passed since last update.

linuxでディレクトリ丸ごとコピーをcpではなくtarで

Posted at

結論から

(cd /home/projects/wp && tar cf - site1) | (cd /home/backup && tar xvf -)
/home/projects/wp/site1というディレクトリを/home/backup/site1という形に
コピーしたい場合上記のように書くといいとの情報があったのでメモしておきます。

理由(個人の解釈)

cpコマンドはコピーをするコマンド
tarコマンドは圧縮、展開するコマンド
正確にはアーカイブを作成、つまりファイルをまとめるという意味かなと個人的には解釈しました。

上記はsite1というディレクトリを圧縮しディレクトリを移動して展開するという流れ。

情報元に理由は書いてなかったのですが個人的な予想としては
cp -aなどの実行時に状況によってパーミッションが変わるなどの場合が発生するため
tarで圧縮解凍したほうが確実という意味合いなのでは?
(ほかのメリットなどありましたらぜひコメントお願いいたしますm(_)m)

また&&の部分は以下のように書くことも可能なのですが
(cd /home/projects/wp; tar cf - site1) | (cd /home/backup; tar xvf -)
&&にすることでcdを間違えて指定した場合にtarが実行されるのを防いでくれるとのこと。

cpコマンドのおさらい(自分がよく使うポイントだけまとめ)

cp -a は cp -dpRと同じ。
オプション解説すると
dはリンクを保持する(シンボリックリンク、ハードリンク共に)
pは可能なら属性をコピーする。可能ならというところが味噌ですな。
この辺りの一つの解決方法としてのtarなのかなと個人的には解釈しました。

つっこみありましたらぜひお願いいたします

cpコマンドもうまく使う方法あるよ。
tarだとリスクがあるよなどなど
突っ込むポイントありましたら是非コメントお願いいたします。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5