cp --backupオプションの使い方|バックアップしながらファイルをコピーしよう
生徒
「Linuxでファイルをコピーするときに、元のファイルを上書きしちゃいそうで心配です……。安全にコピーする方法ってありますか?」
先生
「それなら、cpコマンドの--backupオプションを使うのがおすすめです。コピー先に同じ名前のファイルがあっても、自動的にバックアップを作ってくれますよ。」
生徒
「バックアップって、コピー前のファイルを残してくれるってことですか?」
先生
「そうです!元のファイルを消さずに、コピーを安全に行いたいときにとても便利ですよ。詳しく見てみましょう!」
1. cpコマンドとは?
cpコマンドは、Linuxで「ファイル」や「ディレクトリ」をコピーするときに使う基本コマンドです。Windowsでいう「コピー&ペースト」のようなものですね。
例えば、document.txtというファイルをコピーして、document_backup.txtという名前にする場合は以下のように書きます。
cp document.txt document_backup.txt
ただし、コピー先にすでに同じ名前のファイルがあると、そのファイルは上書きされて消えてしまいます。このときに活躍するのが--backupオプションです!
2. --backupオプションとは?
--backupオプションは、コピー先に同名のファイルがある場合に、自動的に元のファイルをバックアップしてくれる機能です。
バックアップされたファイルは、通常「~(チルダ)」がファイル名の末尾に付く形式になります。
例として、次のように実行すると……
cp --backup memo.txt folder/
もしfolder/memo.txtがすでに存在していれば、それはmemo.txt~として保存され、新しいmemo.txtがコピーされます。
コマンド実行後の状態は次のようになります。
ls folder/
memo.txt memo.txt~
3. 実行例で動作を確認しよう
まず、テスト用のファイルを2つ作成します。
echo "元の内容" > file.txt
mkdir backup_test
echo "古い内容" > backup_test/file.txt
この状態で--backupオプションを使ってコピーしてみましょう。
cp --backup file.txt backup_test/
すると、以下のようにバックアップファイルが作成されます。
ls backup_test/
file.txt file.txt~
file.txt~が元の内容を保存してくれているので、上書きされても安心ですね!
4. バックアップの種類を指定する(-bと--suffix)
--backupの略として-bも使えます。また、バックアップファイルの末尾に付ける文字をカスタマイズするには--suffixを使います。
例えば、末尾に.bakを付けたい場合は以下のようにします。
cp -b --suffix=.bak file.txt backup_test/
実行後はこんな感じになります。
ls backup_test/
file.txt file.txt.bak
5. --backup=numberedで連番のバックアップを作る
--backupオプションは、以下のように動作のモードを指定できます。
--backup=none(デフォルト):バックアップなし--backup=numbered:連番付きのバックアップ(例:file.txt.~1~)--backup=existing:すでに連番が使われていれば、それに従う--backup=simple:チルダ(~)を付ける(通常の動作)
連番でバックアップを取りたいときは、以下のように実行します。
cp --backup=numbered file.txt backup_test/
2回コピーすれば……
ls backup_test/
file.txt file.txt.~1~
さらにコピーすると、
ls backup_test/
file.txt file.txt.~1~ file.txt.~2~
このように、連番でどんどんバックアップされていくのでとても便利です!
6. --backupと他のオプションの組み合わせ例
-i(確認)や-v(詳細表示)と組み合わせて使うと、より安全で視覚的にもわかりやすくなります。
例えば、コピー前に確認しつつ、バックアップを作る場合はこうです。
cp -ibv file.txt backup_test/
-iで「上書きしてもいいですか?」と聞かれ、-vで「何をコピーしたか」が表示されます。
7. cpとrsyncの違いにも注意しよう
cpはシンプルで使いやすいですが、複雑なコピーや差分コピーをしたいときはrsyncというコマンドの方が適しています。
しかし、--backupオプションのように「簡単にバックアップを取りながらコピー」したい場合は、cpの方が初心者には扱いやすいです。