Я случайно удалил файл, запустив:
rm -rf ./Desktop/myScript.sh
Я думаю, что можно восстановить файл, потому что rm
команда временно удаляет. Как я могу восстановить удаленный файл на Mac OSX?
Я случайно удалил файл, запустив:
rm -rf ./Desktop/myScript.sh
Я думаю, что можно восстановить файл, потому что rm
команда временно удаляет. Как я могу восстановить удаленный файл на Mac OSX?
Ответы:
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
. То есть у вас есть возможность пропустить файл в списке.
В зависимости от вашего контента, но вы можете использовать для этого разные сторонние программы, например:
и многое другое.
Вы можете найти больше приложений, набрав «восстановление данных» в App Store.
Более продвинутым способом является загрузка OSX в режиме восстановления (или размонтирование раздела, если вы можете) и поиск его вручную (если вы помните какой-то конкретный текст из вашего скрипта).
Пример:
diskutil list
sudo cat /dev/disk0s2 | strings | grep -C20 "my_stuff"