GNU Core Utilities/cp
cp
コマンドは、GNU coreutils に含まれるファイルやディレクトリをコピーするためのコマンドです。Unix 系 OS において標準的に使用され、FreeBSD などの BSD 系 OS でも cp
コマンドは提供されていますが、GNU coreutils 版とはオプションの挙動が異なる場合があります。
基本的な使い方
編集cp [オプション] コピー元 コピー先
主なオプション
編集主なオプション オプション 説明 -r, --recursive
ディレクトリを再帰的にコピー -i, --interactive
上書き前に確認 -f, --force
上書きを強制 -v, --verbose
コピー中のファイル名を表示 -u, --update
既存のファイルより新しい場合のみコピー -a, --archive
ファイルの属性やシンボリックリンクを保持してコピー -p, --preserve
所有者、パーミッション、タイムスタンプなどを保持 -L, --dereference
シンボリックリンクを解決してコピー
例
編集- 単純なファイルコピー
cp file1.txt file2.txt
file1.txt
をfile2.txt
にコピー(file2.txt
が存在する場合は上書き)。
- ディレクトリを再帰的にコピー
cp -r dir1 dir2
dir1
内のすべてのファイルとサブディレクトリをdir2
にコピー。
- 確認しながらコピー
cp -i file1.txt file2.txt
file2.txt
が存在する場合、上書きするか確認される。
- 詳細な出力付きコピー
cp -v file1.txt file2.txt
- コピーの進行状況が表示される。
- アーカイブモードでコピー
cp -a dir1 dir2
- ディレクトリ
dir1
をdir2
にコピーし、ファイルの属性を保持。
FreeBSD との違い
編集FreeBSD でも cp
コマンドは提供されていますが、GNU coreutils 版とはいくつかのオプションの違いがあります。特に --archive
(-a
) オプションは BSD cp
にはなく、代わりに -p
を使うことが推奨されます。
cp -Rp dir1 dir2 # FreeBSD でアーカイブ風のコピー
必要なら FreeBSD でも coreutils
パッケージをインストールすれば GNU 版の cp
(gcp
) を使用できます。
pkg install coreutils gcp -a dir1 dir2
詳しい違いを確認するには、man cp
でそれぞれのシステムのマニュアルを参照してください。