コマンドラインでMac上の削除されたファイルを回復しました


24

次を実行して誤ってファイルを削除しました:

rm -rf ./Desktop/myScript.sh

rmコマンドが一時的に削除されるため、ファイルを回復できると思います。Mac OSXで削除されたファイルを復元するにはどうすればよいですか?


1
HFS +を使用している場合は、HFS +の復元ツールを探してください。Apple SEサイトはおそらくもっと知っています。
-derobert

1
逸話ですが、義理の父がMac OS Xの写真の大きなディレクトリを誤って削除し、ダウンロードしたツールを使用してそれらのほとんどを復元することに成功しました、それであなたはそれがうまくいくかどうかをテストすることができ、あなたの場合にはそれで十分でしょう)。discussions.apple.com/thread/...
ire_and_curses

回答:


28

MacOSはUnix OSであり、rm「さようなら」を意味します。GUIインターフェースを使用すると、ファイルをごみ箱に移動することができます(その後、回復することができます)が、それはあなたがしたことではありません。バックアップがある場合(たとえば、Time Machineを実行している場合)、保存されます。

明確化

厳密に言えば(@ire_and_cursesが指摘しているように)rm、ファイルのディレクトリエントリを削除し、使用中のディスクブロックはそのままにします。ファイルがあったファイルシステムを静止できる場合、それらのブロックの内容を再発見するための高度な方法があります。損失を回復するために購入できるいくつかの回復ツールもあります。中心的な問題は、ファイルが表すディスクブロックを再利用するものが他にないことです。

MacOSには、安全なremoveコマンド(srm)もあります。このコマンドは、ファイルをunlink編集する前に上書きして回復不能にします。unlinkこれはシェルのrmコマンドに関連付けられている基本的なシステムコールであるため、この用語を使用します。これにより、以下のこの議論の次の部分の準備が整います。

サイドノート

[ディスクを複数回上書きしても、何十回も前に書き込まれた内容を読み取る方法があることを急いで追加する必要があります。ディスクを適切に廃棄するには、酸浴、大きなハンマー、シュレッダーが必要です。]

unlinkファイルを作成すると、ファイルのiノードのリンクカウントが減ります。この値がゼロに達すると、ファイルはファイルシステムディレクトリから削除され、そのディスクブロックは再利用のために解放されます。これは、ファイルを開いているプロセスがない場合にのみ発生します。管理者にとって、ファイルシステムがディスクブロックの単純な合計では説明できない非常に大量のスペースを使用していることを発見するのはしばしば混乱します(などdu)。ほとんどの場合、その理由は、開いているファイルが削除され、そのディレクトリに表示されなくなったためです。その理由は、ファイルを使用する最後のプロセスが終了するまで、ディスクブロックが使用中のままになるためです。

ファイルを開いてすぐにunlinkそれを実行することは、実際には安全な一時ファイルを作成するための一般的な方法です。のようなツールlsofは、リンクカウント(NLINK)が0のファイルを探すと、これらの非表示のファイルを公開できます。

UnixおよびLinux(MacOSはブランド化されたUnix)では、rm可能であればファンファーレなしの「do-it」というUnixの哲学に従います。つまり、ファイルを削除する権限がある場合(つまり、ディレクトリで書き込みが許可されている場合)は、rm要求どおりに処理します。rm='rm -i'操作を実行する前に確認を求めるシェルエイリアスを作成できます。必要に応じて、-fスイッチを使用してrmオーバーライドします。エイリアスrmは、globなどの削除を行うときに最も役立ちますrm *.log。つまり、リスト内のファイルをスキップするオプションがあります。


「説明」セクションでよくやった。
ティム

Mac OSの「安全な消去ゴミ」機能は、最新の回転ディスク上の量子井戸を実際に消去するために研究されたパターンを使用します。ソリッドステートストレージでは、「トリム」機能を使用して、ファイルに関連付けられたストレージブロックをストレージコントローラーの「消去対象」キューの先頭に配置します。本当に内容をディスクから削除したい場合に使用しますが、回転するディスクをスクラブするには時間がかかることに注意してください。
-Wexxor

4

コンテンツによって異なりますが、異なるサードパーティ製ソフトウェアを使用してそれを行うことができます。例:

などなど。

App Storeで「データリカバリ」と入力すると、より多くのアプリを見つけることができます。


より高度な方法は、OSXを回復モードで起動し(または可能であればパーティションをアンマウントし)、手動で探します(スクリプトの特定のテキストを覚えている場合)。

いくつかの例:

diskutil list
sudo cat /dev/disk0s2 | strings | grep -C20 "my_stuff"

1
Wondershareを使用していくつかのコードを取得し、「git clean -f」 'd
fionbio

2
2019年現在、ブロックデバイスのスキャントリックは、APFS暗号化のためにOSXで実行することは不可能または困難になっています。私はLinux上でそのようにデータを正常に取得しています:P
primehunter326
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.