Восстановленные удаленные файлы на Mac из командной строки


24

Я случайно удалил файл, запустив:

rm -rf ./Desktop/myScript.sh

Я думаю, что можно восстановить файл, потому что rmкоманда временно удаляет. Как я могу восстановить удаленный файл на Mac OSX?


1
Вы захотите поискать инструменты восстановления HFS +, если вы используете HFS +. Сайт Apple SE, вероятно, знает больше.
Дероберт

1
Не случайно, но мой тесть случайно удалил большой каталог фотографий в Mac OS X и успешно восстановил большинство из них с помощью загруженного им инструмента (я думаю, что это стоило денег, но у меня была пробная версия для одного или двух файлов). , так что вы можете проверить, будет ли это работать, и в вашем случае этого будет достаточно). discussions.apple.com/thread/...
ire_and_curses

Ответы:


28

MacOS является ОС Unix и rmозначает «до свидания». Графический интерфейс позволяет вам переместить файл в корзину (который затем можно восстановить), но это не то, что вы сделали. Если у вас есть резервная копия (например, у вас работает Time Machine), то вы сохранены.

осветление

Строго говоря (как указывает @ire_and_curses) a rmпросто удаляет запись каталога для файла, оставляя нетронутыми используемые им блоки диска. Если вы можете успокоить файловую систему, в которой находился файл, существуют расширенные методы, с помощью которых вы можете попытаться повторно обнаружить содержимое этих блоков. Есть также некоторые инструменты восстановления, которые можно приобрести, чтобы восстановить потерю. Основная проблема заключается в том, что ничто иное не использует повторно ни один из блоков диска, представленных вашим файлом.

MacOS также имеет команду безопасного удаления ( srm), которая перезаписывает файл перед его unlinkредактированием, что делает его невосстановимым. Я использую этот unlinkтермин, так как это основной системный вызов, связанный с rmкомандой оболочки . Это готовит почву для следующей части этого обсуждения ниже.

Примечание

[Я должен спешить добавить, что даже если вы перезаписываете диск несколько раз, есть способы прочитать то, что было написано с десяток или более раз раньше. Для правильной дезинфекции диска для утилизации действительно требуется кислотная ванна, большой молоток и измельчитель. ]

unlinkИспользование файла уменьшает количество ссылок на его индекс. Если это значение достигает нуля, файл удаляется из каталога файловой системы, а его блоки диска освобождаются для повторного использования. Это происходит только тогда, когда ни у одного процесса нет открытого файла. Администраторам часто бывает непонятно, что файловая система использует очень большие объемы пространства, которые нельзя объяснить простым суммированием дисковых блоков (с чем-то вроде du). Чаще всего причина в том, что открытый файл был удален, так что он больше не представлен в своем каталоге. Причина в том, что дисковые блоки остаются в использовании до тех пор, пока не завершится последний процесс, использующий файл.

Открытие файла и его немедленное использование unlink- это обычная практика для создания безопасных временных файлов. Такие инструменты, как lsofмогут открыть эти невидимые в противном случае файлы, если вы ищете файлы с количеством ссылок (NLINK), равным нулю.

В Unix и Linux (из которых MacOS является маркой Unix), rmследует философии 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 года, трюк сканирования блочных устройств теперь невозможен или более труден для OSX из-за шифрования APFS. Я успешно получаю данные таким образом на Linux, хотя: P
primehunter326
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.