GNU Core Utilities/shred
shred
コマンドは、ファイルを安全に削除するためのコマンドです。単に rm
で削除するだけでは、ディスク上にデータが残っていて復元可能な場合がありますが、shred
を使用すると、ファイルの内容を上書きして復元を困難にできます。
- 注意
-
shred
は HDD(磁気ディスク)向け のツールであり、SSDやフラッシュメモリ(例: USBメモリ, NVMe)には効果が限定的です。SSDではウェアレベリング機能のため、データが完全に上書きされない可能性があります。- 一部のファイルシステム(例:
ext3
のジャーナリングモード、btrfs
、ZFS
)ではshred
の効果が制限される場合があります。
基本的な使い方
編集shred [オプション] ファイル名
主なオプション
編集主なオプション オプション 説明 -n, --iterations=N
上書き回数を指定(デフォルトは3回) -z, --zero
最後にゼロで上書き(隠蔽) -u, --remove
上書き後にファイルを削除 -f, --force
書き込み保護を解除して削除を試行 -v, --verbose
進行状況を表示 -x, --exact
ファイルサイズを変えずに上書き --random-source=FILE
乱数のソースを指定
例
編集ファイルを3回上書きして削除
編集shred -u confidential.txt
confidential.txt
を3回上書きし、削除。
ファイルを1回上書きして削除(処理を高速化)
編集shred -u -n 1 confidential.txt
1回の上書きのみ行い、その後削除。
ファイルを3回上書きし、最後にゼロで隠蔽
編集shred -u -z confidential.txt
最後の上書きをゼロで行い、削除したことを隠す。
ファイルを7回上書き
編集shred -n 7 confidential.txt
7回上書きするが、削除はしない。
上書き処理の進捗を表示しながら実行
編集shred -v -u confidential.txt
削除状況を確認しながら安全に削除。
SSD や特定のファイルシステムでの注意点
編集shred
は HDD に適したツール であり、以下の状況では完全なデータ削除が保証されません。
- SSD・NVMe の場合
- SSD ではデータの書き込みが均等に分散(ウェアレベリング)されるため、
shred
で上書きしても別の領域に元データが残る可能性がある。 - 対策:
shred
ではなく、blkdiscard
(Linux)やATA Secure Erase
(BIOS/UEFI)を使用する。
- SSD ではデータの書き込みが均等に分散(ウェアレベリング)されるため、
- ジャーナリングファイルシステム(ext3, ext4, XFS, btrfs, ZFS)
shred
が意図した場所にデータを書き込めないことがある。- 対策:
srm
(secure rm)やwipefs
を使用する。
FreeBSD での代替手段
編集FreeBSD には shred
が含まれていません。代わりに以下のコマンドを使用します。
rm -P
(3回上書きして削除)rm -P confidential.txt
shred
の基本的な機能に相当。
dd
を使用した上書きdd if=/dev/urandom of=confidential.txt bs=1M count=10 rm confidential.txt
/dev/urandom
から乱数データをconfidential.txt
に書き込み、その後削除。
srm
(secure rm)をインストールpkg install secure-delete srm confidential.txt
srm
はshred
よりも強力な削除を行うツール。
まとめ
編集- ✅ HDD の場合:
shred
は有効。shred -u -z
で安全に削除可能。 - ❌ SSD の場合:
shred
は不完全。blkdiscard
やATA Secure Erase
を使用するべき。: - ⚠ FreeBSD では
shred
がないため、rm -P
やsrm
を使用。
安全にデータを削除する場合は、ストレージの特性を理解した上で適切なツールを選択しましょう。
最も確実にデータを削除したい場合には、ストレージデバイスの物理的破壊も検討に値します。