cpコマンドでディレクトリをコピーするときのメモ

Linuxサーバー上でなんやかんや変更する前など、ディレクトリをコピーしてバックアップを取ったりする。

自動化しろよというのは置いといて、 cp コマンドのオプションやディレクトリの有無による挙動の違いを、ちょくちょく忘れるのでメモ。

環境

cp (GNU coreutils) 8.30 および 8.31 で確認。

要約

こんな階層として、コピー先のディレクトリが存在しない前提。

.
`-- src_dir
    |-- (いくつかのサブディレクトリ)
    `-- sub_dir
        `-- src.txt

ディレクトリまるごとコピーする場合

cp -aiv src_dir/ dest_dir/

特定のサブディレクトリをコピーする場合

mkdir dest_dir/ && cp -aiv src_dir/sub_dir/ dest_dir/.

オプションの概要

  • a: archive, サブディレクトリやファイルの属性などを保持してコピー
  • i: interactive, 上書き時に確認する、コピー先ディレクトリを間違えた時など、念のため
  • v: verbose, 惰性で付けてる

コピー先ディレクトリの有無による挙動の変化

前述の要約では、単純化のためコピー先のディレクトリが存在しないものとしたが、 cp はコピー先ディレクトリの有無で挙動が変わる。

以下に詳しい。

qiita.com