Відновлені видалені файли на Mac за допомогою командного рядка


24

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

rm -rf ./Desktop/myScript.sh

Я думаю, що можливо відновити файл, оскільки rmкоманда тимчасово видаляється. Як я можу відновити видалений файл на Mac OSX?


1
Ви хочете шукати інструменти HFS + для відновлення, припускаючи, що ви використовуєте HFS +. Сайт Apple SE, напевно, знає більше.
дероберт

1
Анекдотично, але мій тесть випадково видалив великий каталог фотографій на Mac OS X і вдалося відновити більшість із них, використовуючи завантажений ним інструмент (я думаю, це коштувало грошей, але пробував пробування одного чи двох файлів , тож ви можете перевірити, чи буде це працювати, і у вашому випадку цього буде достатньо). дискусії.apple.com
thread/…

Відповіді:


28

MacOS - це ОС Unix і rmозначає "до побачення". Інтерфейс GUI дозволяє перемістити файл у кошик (який ви можете відновити), але це не те, що ви робили. Якщо у вас є резервна копія (наприклад, у вас працює Time Machine), то вас збережуть.

Уточнення

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

У MacOS також є захищена команда видалення ( srm), яка перезаписує файл до unlinkредагування, що робить його не підлягає відновленню. Я використовую unlinkтермін, оскільки це базовий системний виклик, пов'язаний з rmкомандою оболонки . Це ставить підґрунтя для наступної частини цієї дискусії нижче.

Sidenote

[Я повинен поспішити додати, що навіть якщо ви переписуєте диск кілька разів, є способи прочитати те, що було написано десяток і більше разів раніше. Для правильного очищення диска для утилізації дійсно потрібна кислотна ванна, великий молоток і подрібнювач. ]

unlinkІнкремент файлу зменшує кількість посилань на inode файлу. Якщо це значення дорівнює нулю, файл видаляється з каталогу файлової системи, а його дискові блоки звільняються для повторного використання. Це відбувається лише тоді, коли жоден процес не відкриває файл. Адміністраторам часто заплутано виявити, що файлова система використовує дуже велику кількість простору, яку неможливо врахувати простим підсумком блоків дисків (з чимось подібним 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.