mv --backupオプションの使い方|バックアップを作成しながら安全に移動する方法
生徒
「mvコマンドでファイルを移動したら、もともとあったファイルが消えちゃいました…」
先生
「それは上書きされてしまったからだね。でも--backupオプションを使えば、古いファイルをバックアップとして残すことができるよ。」
生徒
「バックアップが自動でできるんですか?安心ですね!どうやって使えばいいんですか?」
先生
「それじゃあ、mv --backupの使い方をわかりやすく解説していこう!」
1. mvコマンドとは?
mvコマンドは、LinuxやmacOSなどのターミナルで利用される、ファイル操作の基本中の基本となるコマンドです。名称の由来は「move(移動する)」からきており、主に「ファイルの移動」と「ファイル名の変更(リネーム)」という2つの役割を持っています。
パソコンのデスクトップで、マウスを使ってアイコンを別のフォルダへドラッグ&ドロップしたり、右クリックして名前を変えたりする操作を、コマンドひとつで実行できるのがこのmvコマンドです。
基本的な使い方のイメージ
プログラミング未経験の方でも分かりやすいように、具体的な例を見てみましょう。例えば、「hello.txt」というファイルを「Documents」という名前のフォルダの中に移動したい場合は、次のように入力します。
mv hello.txt Documents/
ls Documents/
hello.txt
このように、直感的に操作できる非常に便利なコマンドですが、初心者の方が最も注意すべき「落とし穴」があります。
ここが注意ポイント!
mvコマンドは、移動先に同じ名前のファイルが既に存在している場合、警告なしに古いファイルを上書きして消し去ってしまいます。一度上書きされて消えたファイルは、Windowsの「ゴミ箱」のように簡単には元に戻せません。
この「うっかり上書き」という重大なミスを防ぎ、安全に作業するために欠かせないのが、今回詳しく解説する--backupオプションなのです。
2. --backupオプションとは?
--backupオプションとは、一言でいうと「上書きされるファイルを自動で避難させてくれる機能」のことです。通常のmvコマンドは、移動先に同じ名前のファイルがあると上書きして消してしまいますが、このオプションを使えば安全に作業が進められます。
例えば、大事なデータが入った「file.txt」を移動させようとしたとき、移動先に同名のファイルがあったとしましょう。このオプションを指定していると、もともと移動先にあった古いファイルは「file.txt~」のように末尾にチルダ記号が付いたバックアップファイルとして自動的にリネームして保存されます。
初心者向けのイメージ
机の上の「古い書類」を捨てて「新しい書類」を置くのではなく、古い書類を机の引き出しにしまってから、新しい書類を置くようなイメージです。これなら「やっぱりさっきの書類が必要だった!」という時でも、すぐに引き出しから取り出せますね。
実際に、バックアップが作成される様子をコマンドの結果で見てみましょう。移動先に同じ名前のファイルがある状態で実行すると、以下のようにファイルが保護されます。
ls
memo.txt archive/memo.txt
mv --backup memo.txt archive/
ls archive/
memo.txt memo.txt~
このように、元のファイル名に「~」が付いた状態で残るため、誤って上書きしてしまったことに気づいても、後からデータを復元することが可能です。コマンド操作に慣れていない初心者の方ほど、「上書き防止の保険」として覚えておきたい非常に強力なオプションです。
3. mv --backupの基本的な使い方
mv --backupの使い方は非常にシンプルです。通常のmvコマンドの後に--backupというオプションを書き足すだけで、上書きによるデータ紛失を防ぐことができます。特に、上書きされる可能性があるファイルを事前に確認するのが面倒な場面で、このコマンドは真価を発揮します。
基本の書式
mv --backup [移動したいファイル] [移動先のパス]
それでは、具体的なシチュエーションで試してみましょう。例えば、手元にある「data.txt」を「archive」というフォルダへ移動させる場面を想定します。もし移動先のフォルダにすでに同じ名前のファイルがある場合、実行結果は次のようになります。
mv --backup data.txt archive/data.txt
ls archive/
data.txt data.txt~
コマンドを実行したあと、移動先のフォルダを確認すると、ファイルが2つ並んでいるのがわかりますね。新しく移動してきたファイルは「data.txt」として保存され、もともと移動先にあった古いファイルは自動的に「data.txt~」という名前にリネームされています。
このように、末尾に「~(チルダ)」が付いたファイルが生成されるのが、デフォルトのバックアップ動作です。万が一「間違えて古い内容を上書きしてしまった!」と焦ったときでも、このチルダ付きのファイルを開けば、上書き前のデータを確認したり元に戻したりすることが可能です。
4. 実行例を見てみよう
「言葉の説明だけではイメージが湧きにくい」という方のために、実際の操作画面に近い形でシミュレーションしてみましょう。ここでは、上書きが起こる典型的なシーンを再現します。
状況としては、現在の場所に最新の「data.txt」があり、移動先の「archive」フォルダ内にも古い「data.txt」が既に存在している状態です。このまま普通のmvコマンドを使うと古いデータは消えてしまいますが、--backupオプションを使うとどうなるでしょうか。
ls archive/
data.txt
mv --backup data.txt archive/
ls archive/
data.txt data.txt~
実行結果を見ると、archiveフォルダの中にファイルが2つ並んでいることがわかります。新しく移動した最新のファイルが「data.txt」という名前になり、もともとフォルダ内にあった古いファイルが「data.txt~」という名前に自動でリネームされて保存されました。
ここがポイント!
「~」がついたファイルは、Googleドキュメントの「履歴」やWordの「バックアップファイル」と同じ役割を果たします。このように、万が一のミスを防ぎながらファイルを整理できるのが、このオプションの最大のメリットです。
5. --backup=numberedやexistingなどの制御モード
--backupオプションには、バックアップファイルの「名前の付け方」をより細かく指定できるモード(引数)が用意されています。標準の--backupだけでは、上書きするたびに古いバックアップが消えてしまいますが、モードを使い分けることで複数の世代を残すことも可能です。
主に使われる4つのモードについて、初心者の方にも分かりやすく解説します。
| モード名 | 動作の内容 |
|---|---|
none (または off) |
バックアップを作成しません(通常のmvと同じ動作)。 |
numbered (または t) |
バックアップ名に数字を付けます(例:file.txt.~1~, file.txt.~2~)。 |
existing (または nil) |
既に数字付きのバックアップがあれば数字を使い、なければ通常(~)を使います。 |
simple (または never) |
常に末尾に「~」を付けるだけのシンプルな方式です。 |
世代管理ができる numbered モードの使い方
「何度もファイルを移動・更新するけれど、過去の履歴をすべて残しておきたい」という場合には、numbered(ナンバード)が最適です。これを使えば、上書きされるたびに 1, 2, 3... と自動で番号が振られるため、データが消える心配がありません。
実際に、同じ名前のファイルを2回移動させた時の動きを見てみましょう。
mv --backup=numbered data.txt archive/
mv --backup=numbered data.txt archive/
ls archive/
data.txt data.txt.~1~ data.txt.~2~
このように、data.txt.~1~ という形式で履歴が積み重なっていきます。プログラミングのソースコードや設定ファイルをいじる際、「昨日の状態に戻したい」ということがよくありますが、この番号付きバックアップを使えば、過去のどの時点の状態へも簡単に復元できるため非常に安全です。
existingモードの賢い挙動
existingを指定しておくと、「基本はシンプルなバックアップ(~)だけど、一度でも番号付きバックアップを作ったことがあるファイルなら、次からも自動で番号を増やす」という柔軟な対応をしてくれます。迷ったらこれを使うのも手ですね。
6. 他のオプションとの組み合わせでさらに便利に
--backupオプションは、他の便利なオプションと組み合わせることで、操作のミスを減らし、実行結果をより分かりやすく把握できるようになります。特に初心者のうちは「今、裏側で何が起きたのか」が不安になりがちですが、これらを併用すれば安心して作業を進められます。
1. 実行結果を表示する -v オプション
-v(--verbose)オプションを付けると、どのファイルがどこへ移動し、どのバックアップが作成されたかを画面に表示してくれます。プログラミングに詳しくない方でも、処理の「実況中継」が見えるので非常に安心です。
mv -v --backup memo.txt archive/
'memo.txt' -> 'archive/memo.txt' (backup: 'archive/memo.txt~')
2. 移動先を先に指定する -t オプション
通常、mvコマンドは最後に移動先を書きますが、-tオプションを使うと「ここに移動する」という場所を先に指定できます。大量のファイルを一箇所にまとめたい時に、移動先のフォルダを間違えるリスクを減らせます。
mv --backup -t archive/ report.txt config.txt
ls archive/
config.txt config.txt~ report.txt report.txt~
組み合わせのコツ
「mv -vb --backup=numbered」のように、複数のオプションをまとめて書くことも可能です。バックアップを取りつつ、詳細な動きを画面で確認する癖をつけておけば、ターミナル操作の習熟度がぐんと上がります。
7. バックアップファイルの扱いに注意
作成されたバックアップファイル(例:file.txt~)は、自動で削除されることはありません。不要になった場合は、自分で削除する必要があります。
また、複数回上書きすると、バックアップファイルがどんどん増えるので、定期的に整理するようにしましょう。
8. mv --backupはどんな場面で使う?
主に次のような場面で--backupは役立ちます。
- 編集作業中のファイルを安全に上書きしたいとき
- 複数人で共有するディレクトリにファイルを移動する場合
- ログや設定ファイルなど、消えて困るファイルを扱うとき
安全第一の操作を意識するなら、mv --backupは非常に心強い味方になります。