rm --one-file-systemオプションを徹底解説!初心者向けにマウントポイントの削除を防ぐ方法
生徒
「Linuxでrmコマンドを使ってディレクトリを削除するときに、外付けドライブまで消してしまいそうで不安です…」
先生
「それなら、--one-file-systemオプションを使うと安心ですよ。マウントポイントをまたいで削除するのを防いでくれます。」
生徒
「マウントポイントって何ですか?そして、どうやってそのオプションを使えばいいんですか?」
先生
「それじゃあ、順番にわかりやすく説明していきましょう!」
1. マウントポイントとは?
Linuxでは、外付けHDDやUSBメモリなどの外部ストレージを使うときに、それらを「マウントポイント」という場所に接続します。
例えば、USBメモリを/mnt/usbに接続すれば、その中のファイルは/mnt/usbの中に表示されます。
この仕組みにより、Linuxでは複数のストレージが1つのディレクトリ構造の中に統合されて扱われます。
2. rmコマンドとディレクトリ削除の危険性
rm -rは、ディレクトリの中身をすべて削除するコマンドです。もし、この中に別のファイルシステム(=別のマウントポイント)が含まれていた場合、本来削除するつもりのなかった外部ストレージのファイルまで削除してしまう危険性があります。
たとえば、/dataというディレクトリの中に/data/backupとして外部ストレージがマウントされていた場合、rm -r /dataで削除してしまうと、外付けHDDの中身も消えてしまうのです。
3. --one-file-systemオプションとは?
--one-file-systemオプションは、rmコマンドで削除する際に、別のファイルシステムをまたがないように制限するための機能です。
簡単に言うと、外部ストレージや他のパーティションにマウントされている領域を削除対象から除外してくれます。
このオプションは、-r(再帰的削除)と一緒に使うのが基本です。
4. 実際の使い方
たとえば、/dataというディレクトリの中に別のファイルシステム(例:USBメモリ)がマウントされているとします。その場合、次のようにコマンドを実行します。
rm -r --one-file-system /data
このように実行することで、/dataの中にあるマウントされた外部ストレージの内容は削除されません。通常のファイルやフォルダだけが削除されるようになります。
5. 削除を安全にするための確認付き例
-iオプションを使うと、削除前に確認メッセージが出るので、さらに安心です。
rm -ri --one-file-system /data
rm: descend into directory '/data'?
rm: remove regular file '/data/test1.txt'?
このように、yを入力しないと削除されないので、安全に作業できます。
6. 他のオプションとの組み合わせ例
--one-file-systemは以下のようなオプションと一緒に使うと便利です。
-r:ディレクトリを再帰的に削除-i:削除前に確認する-v:削除されたファイル名を表示
例えば、削除の前に確認しながら、削除されたファイル名も表示したい場合は次のように書きます。
rm -rvi --one-file-system /data
7. ルートユーザーで実行する場合
root(管理者)ユーザーで実行するときも、--one-file-systemは有効に働きます。特に/直下の操作では細心の注意が必要です。
次のようなコマンドで、ルート直下のディレクトリを誤って消さないようにできます。
rm -r --one-file-system /var
このとき、もし/var/backupに別のファイルシステムがマウントされていれば、/var/backupの中身は削除されずに残ります。
8. dfコマンドでマウントポイントを確認する
どこにマウントされているかを事前に確認するには、dfコマンドを使うと便利です。
df -h
ファイルシステム サイズ 使用 残り 使用% マウント位置
/dev/sda1 100G 50G 50G 50% /
/dev/sdb1 500G 200G 300G 40% /data/backup
このように、/data/backupが別のファイルシステムであることがわかります。
9. --one-file-systemが役立つケース
このオプションは、以下のような場面でとても役立ちます。
- cronで自動削除処理を設定しているとき
- バックアップ用の外付けHDDを誤って削除したくないとき
- 複数のディスクを扱っているサーバー環境
特にサーバー運用や自動化スクリプトでは、安全のために必ず使いたいオプションのひとつです。