0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Macのゴミ箱とrmコマンドの違いについて

Posted at

前書き

rmコマンドでファイルを削除すると、ファイルは基本的に復元できません。一方、通常WindowsやMac、LinuxでもGUI上で削除を行っても、ゴミ箱を空にしない限り復元できます。
今回はMacベースでこの違いについて整理し、rmコマンド前のバックアップが非常に重要であることを確認します。

Macのゴミ箱とrmコマンドの違いについて

はじめに

Macでファイルを削除する方法には主に2つあります。

  • **Finder(ファインダー)**を使って削除する方法
  • ターミナルrmコマンド(removeの略)を使って削除する方法

この2つは結果が似ていても、実際の動作やリスクが大きく異なります。この記事では、初心者にも分かりやすく、それぞれの仕組みと違いを解説します。


Finderでの削除:ゴミ箱の仕組み

Finderでファイルを削除すると、「ゴミ箱」に入ります。これは単にファイルを隠しディレクトリに移動しているだけで、物理的には削除されていません。

ゴミ箱の実体

削除元ディスク ゴミ箱のパス
内蔵ディスク(Mac本体) ~/.Trash/
外付けドライブ・USB /Volumes/<ボリューム名>/.Trashes/<UID>/

~ はホームディレクトリ(例:/Users/username/)を意味します。
<UID> はユーザーIDです(数値例:501など)。

ゴミ箱移動の流れ

┌────────────┐ ┌────────────────────┐ 
│ Finder操作 │ ───▶ │ ~/.Trash に移動 │ 
└────────────┘ └────────────────────┘ 
▼ ゴミ箱を空にする → 完全削除

実際、bashシェルでユーザーのホームディレクトリを確認すると、.Trashディレクトリの存在を確認できます
ターミナルでls -a ~を実行すると.Trashディレクトリが表示されます

特徴

  • ファイルはすぐには消えない
  • 誤って削除しても復元可能
  • システムが許す限りゴミ箱内に残る

rmコマンドでの削除

UNIX系OSであるmacOSにはターミナル操作があります。ここで使われるrm(remove)コマンドは、ファイルを即時・完全に削除します。Finderのような「ゴミ箱」は関与しません。

主な使用例

rm file.txt          # 通常のファイル削除  
rm -r mydir/         # ディレクトリを再帰的に削除  
rm -f force.txt      # 強制削除(確認なし)
┌────────────┐       ┌────────────────────┐
│ ターミナル操作 │ ───▶ │ ディスクから即座に削除 │
└────────────┘       └────────────────────┘
                           │
                           ▼
                  通常の手段では復元不可
項目 Finderでの削除 rmコマンドでの削除
削除後の挙動 ゴミ箱に移動 即時削除
復元可能性 あり(ゴミ箱から戻せる) なし(通常の手段では不可)
安全性 高い(誤削除しても安心) 低い(復元が困難)

終わりに

上書きに関しても同様ですので、ファイルの上書きの可能性がある場合はバックアップを取得するように心がけると良いでしょう。
バックアップ用のシェルを用意しておくのも良いかと。

#!/bin/bash

# バックアップ先ディレクトリ
BACKUP_DIR="$HOME/backup_$(date +%Y%m%d)"
LOG_FILE="$BACKUP_DIR/backup.log"

# 引数チェック
if [ "$#" -lt 1 ]; then
  echo "Usage: $0 <file_or_directory_to_backup>"
  exit 1
fi

# バックアップ先ディレクトリを作成
mkdir -p "$BACKUP_DIR"

# バックアップ処理
for TARGET in "$@"; do
  if [ -e "$TARGET" ]; then
    BASENAME=$(basename "$TARGET")
    DEST="$BACKUP_DIR/${BASENAME}_$(date +%H%M%S)"
    cp -a "$TARGET" "$DEST"
    echo "[✔] Backed up '$TARGET' to '$DEST'" | tee -a "$LOG_FILE"
  else
    echo "[✘] '$TARGET' does not exist. Skipped." | tee -a "$LOG_FILE"
  fi
done

多くの場合は取り返しがつかないことになるので、気をつけましょう。ユーザーの編集権限を明確に定義するのが一番効果的ですが、多くの開発現場ではそうもいかない側面もあると思います。
誤削除は誰にでも起こり得ます。大切なデータを守るためにも、バックアップと操作前の確認を徹底しましょう。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?