カテゴリ: Linuxコマンド集 更新日: 2026/01/22

cp --remove-destinationオプションとは?初心者向けに上書きコピー時の削除処理を解説!

cp --remove-destinationオプション|上書き時に事前削除してからコピーする
cp --remove-destinationオプション|上書き時に事前削除してからコピーする

先生と生徒の会話形式で理解しよう

生徒

「Linuxでファイルをコピーするときって、上書きされちゃうんですよね?安全にコピーする方法ってありますか?」

先生

「そのとおり。特にcpコマンドで同じ名前のファイルにコピーすると、通常はそのまま上書きされてしまいます。」

生徒

「もしコピー先のファイルを一度消してからコピーしたい場合はどうするんですか?」

先生

「そんなときは--remove-destinationオプションが便利ですよ。コピー先のファイルを一度削除してからコピーしてくれるんです!」

1. cpコマンドの基本をおさらい

1. cpコマンドの基本をおさらい
1. cpコマンドの基本をおさらい

Linuxのcpコマンドは、「ファイル」や「ディレクトリ」をコピーするための基本的なコマンドです。

たとえば、次のようにすればファイルをコピーできます。


cp file1.txt backup.txt

この場合、backup.txtがすでに存在していれば、file1.txtの内容で上書きされます。ただし、このとき「元の属性」や「アクセス権限」が一部残ることがあります。

2. --remove-destinationオプションとは?

2. --remove-destinationオプションとは?
2. --remove-destinationオプションとは?

--remove-destinationオプションを使うと、コピー先のファイルが存在している場合に、まずそのファイルを削除してから新しいファイルをコピーします。

この動作により、コピー元のファイルの内容だけでなく、パーミッション(権限)や所有者情報も正確に反映されやすくなります

次のように使います。


cp --remove-destination file1.txt backup.txt

3. 実際の動作を確認してみよう

3. 実際の動作を確認してみよう
3. 実際の動作を確認してみよう

まず、テスト用のファイルを2つ用意します。


echo "元のファイル" > original.txt
echo "古いバックアップ" > backup.txt

普通にcpすると、上書きされますが属性は維持される可能性があります。

しかし、--remove-destinationを使えば、コピー先が一旦削除されるので、次のように振る舞います。


cp --remove-destination original.txt backup.txt

この操作により、backup.txtが一度削除され、original.txtが新しくコピーされます。

4. 通常の上書きとどう違うの?

4. 通常の上書きとどう違うの?
4. 通常の上書きとどう違うの?

普通のcpでは、次のように「内容だけ」上書きされます。


cp file1.txt file2.txt

この方法では、コピー先ファイルのパーミッションオーナー情報がそのまま残ることがあります。

一方、--remove-destinationを使うと、元のファイルが完全に削除された後でコピーされるため、属性も上書きされやすくなります。

とくにルート権限(管理者権限)で作成されたファイルを一般ユーザーがコピーするときに、この違いが重要になります。

5. -f(強制)や-i(確認)との違い・組み合わせ

5. -f(強制)や-i(確認)との違い・組み合わせ
5. -f(強制)や-i(確認)との違い・組み合わせ

-fオプションは「強制的に上書き」する動作です。


cp -f file1.txt file2.txt

これは「確認なしで上書きする」だけで、削除してからコピーするわけではありません。

一方で、-i(インタラクティブ)オプションは、上書きする前に確認してくれます。


cp -i file1.txt file2.txt

--remove-destinationは、あくまで事前に削除してからコピーという特殊な動作です。

つまり、安全に属性も含めて完全に置き換えたい場合--remove-destinationが適しています。

6. シンボリックリンクとの違いにも注意

6. シンボリックリンクとの違いにも注意
6. シンボリックリンクとの違いにも注意

Linuxでは「シンボリックリンク(別名ファイル)」という特殊なファイルがあります。

シンボリックリンクを上書きする場合、通常のcpではリンクの先が上書きされますが、--remove-destinationを使うとリンク自体が削除されて実体ファイルとしてコピーされます。

そのため、リンク構造を壊したくないときはこのオプションを避けるようにしましょう。

7. 実行時の権限に注意しよう

7. 実行時の権限に注意しよう
7. 実行時の権限に注意しよう

コピー先のファイルを削除するには、「削除する権限」が必要です。

たとえば、backup.txtがroot(管理者)ユーザーが作ったファイルであれば、通常ユーザーでは削除できません。

このようなときに--remove-destinationを使おうとしても、次のようなエラーになります。


cp: cannot remove 'backup.txt': Permission denied

この場合は、管理者権限(sudo)を使う必要がありますが、危険なので注意が必要です。

関連記事:
カテゴリの一覧へ
新着記事
New1
ファイル・ディレクトリ操作
basenameの--zeroオプションでヌル文字区切り!xargsと安全に連携するLinuxの基本
New2
ファイル・ディレクトリ操作
find -userオプションの使い方を完全ガイド!初心者でもわかる所有者ユーザーでファイルを検索する方法
New3
ファイル・ディレクトリ操作
find -okオプションとは?初心者向けに丁寧解説!Linuxで確認付きコマンド実行をマスターしよう
New4
ファイル・ディレクトリ操作
dirname --zeroオプション|出力をヌル文字で区切る方法
人気記事
No.1
Java&Spring記事人気No1
ファイル・ディレクトリ操作
findコマンドの使い方を完全ガイド!初心者でもわかるLinuxのファイル検索の基本
No.2
Java&Spring記事人気No2
ファイル・ディレクトリ操作
rmコマンドとは?Linuxでファイルやディレクトリを削除する基本
No.3
Java&Spring記事人気No3
ファイル・ディレクトリ操作
cdコマンドとは?Linuxでディレクトリを移動する基本を初心者向けに解説
No.4
Java&Spring記事人気No4
ファイル・ディレクトリ操作
cd ~ の使い方を完全解説!ホームディレクトリへの移動方法と初心者向けLinuxコマンド入門