Чи можна відновити файли / каталоги, видалені за допомогою rm?


69

Чи можливо відновити файли / каталоги, які видаляються з терміналу за допомогою rmі rm -r?. Якщо файл видалено з графічного інтерфейсу, його можна буде відновити зі сміття, але як відновити файл, якщо його видалити за допомогою утиліти rm ?.


інструменти для відновлення видалених файлів (у будь-якій формі), ви можете подивитися на це питання askubuntu.com/q/3883
— Decio Lira

Не використовуйте "rm", якщо хочете відновити файли в майбутньому. Ви можете скористатися утилітою "rm-trash": github.com/nateshmbhat/rm-trash
— Natesh bhat

Відповіді:


63

Для цього я використовую trash-cliпакунок і наступний псевдонім у своєму~/.bashrc

alias rm=trash

І trash-cliпакет може бути встановлений з допомогою команди followoing: sudo apt-get install trash-cli.

Видалені файли будуть переміщені в кошик, і ви можете побачити їх у кошику nautilus.

Ви завжди можете отримати доступ до реального rm, скориставшись одним із наступних методів:

command rm something
'rm' something
\rm something

Є також команди для доступу до смітнику від терміналу trash-list, restore-trash(або trash-restore), trash-emptyщо встановлюється з пакета трешу-клі (то побачити їх сторінку людини).

Останнє зауваження, такий псевдонім не бажано використовувати для суперкористувача, оскільки він може перешкоджати роботі системи.


19
Це обхід, але насправді не відповідає на питання.
— Євген

Я думаю, що користувач також міг би знати, чи є якийсь метод досягнення тієї ж поведінки з командного рядка. Якщо ні, я готовий зняти свою відповідь.
— enzotib

3
Це добре. Я здобув певні знання.
— user3215

27

Видалення його з терміналу видаляє його назавжди - відновлення дуже важке, а іноді й неможливе.

Якщо ваш тип розділу ext3(перевірити це за допомогою System->Administration->Disk Utility), подивіться на ext3undel .

Якщо це не так (якщо ви встановили Ubuntu з налаштуваннями за замовчуванням ), спробуйте extundeleteпрограму.

Немає гарантій, що ви відновите що-небудь.


Це було б дуже корисно для настільних видань.
— user3215

Я сумніваюся, що це ефективно працює для SSD-накопичувачів, але раді почути інакше
— мат

13

Ви шукаєте: extundelete - утиліта для відновлення видалених файлів з розділу ext3 / ext4

Щоб знайти такий пакет, ви можете спробувати: apt-cache search undelete

Щоб скористатися утилітою, встановіть її за допомогою: sudo apt-get install extundelete

Після установки викликайте man extundeleteі уважно вивчайте його.


6

Як альтернатива, якщо ви конкретно знаєте, який тип файлу це ...

sudo apt-get install foremost

Тепер відкрийте, /etc/foremost.confі ви побачите довгий список коментованих рядків. Якщо тип вашого файлу існує, коментуйте рядок (ви також можете видалити неактуальні рядки).

Якщо тип файлу не існує, додайте власний рядок. Скажіть, я хочу відновити .css файл, і я знаю його близько 40K. Я можу додати це:

css     n       40000   Theme\sName:     Plugin\sFixes

2-й стовпець стосується чутливості до регістру, третій стовпець посилається на верхню межу розміру, 4-й стовпець - як починається файл (не забудьте використовувати символи, що увійшли), а останній - як зазвичай закінчується файл.

Скористайтеся наступною командою (відредагуйте диск відповідно. Можна перевірити за допомогою dfкоманди)

foremost -v -T -c /etc/foremost.conf -i /dev/sda -o output

Що буде далі - це передусім створити папку під назвою вихід та скинути всі відновлені дані (у даному випадку) у папку. Звідти ви можете скористатись diffабо meldпорівняти відновлені "файли" та побачити, які є найбільш сучасними.


дуже дякую. Це спрацювало чудово. Я випадково видалив свій phpвихідний файл, використовуючи rm -fr php/2 phpфайли. Менш ніж за 2 хвилини вони були відновлені ідеально. У .confфайл я додав:php n 40000 <?php ?> ASCII
— Шакіба Моширі

5

Якщо говорити найбільш абстрактними термінами, щоразу, коли ви видаляєте файл із графічного інтерфейсу, файл "переміщується" до спеціального "буфера", що називається каталогом trash. Ви можете знайти його в homeкаталозі ~/.local/share/Trash/. Файли, "видалені" з цього каталогу, будуть дійсно видалені. Це справжнє видалення - це те, що відбувається при використанні rmфайлу.

Відновити видалені файли надзвичайно важко. Файли у файловій системі представлені у вигляді вузлів на B-дереві тощо. Коли файл видаляється за допомогою rm, дерево оновлюється, кількість жорстких посилань зменшується, відповідний запис у списку каталогів видаляється. Якщо взагалі у вашому файлі було міцне посилання, ваш файл абсолютно безпечний. Ви можете зробити file / -samefile filename. Ви можете шукати файл, якщо пам’ятаєте і його номер inode (навряд чи це так).

Інший випадок, коли жодна з перерахованих вище можливостей не відповідає дійсності. Щоразу, коли ви rmстворюєте файл, запис файлу в каталозі видаляється, зменшуючи кількість жорстких посилань на одиницю. І якщо кількість жорстких посилань опуститься до нуля, то вказівник на файл в inode опускається або позначається видаленим. У будь-якому випадку ваш файл "все ще" знаходиться на жорсткому диску. Файл фактично стирається з жорсткого диска лише після наступного перезавантаження. Відновлення файлів у такий час надзвичайно важке, передбачає перехід дерева файлової системи та вкладок, що представляють фактичні місця дискового блоку. Є популярний інструмент, про який я чув, але ніколи його не використовував extundelete. Хоча гарантії немає, варто спробувати.

Після успішного відновлення файлів чи ні, поспішайте робити регулярні резервні копії. На Ubuntu це надзвичайно просто.


2

Вибачте, але файли, видалені з командного рядка з "rm" та "rm -f", обходять "Trashcan", який у вас є на робочому столі Gnome.

Ви також можете запитати, чи існують інструменти для відновлення файлів extfs, як наприклад, для FAT та NTFS. (Я не знаю жодного, але я був би здивований, якби їх не було.)


Ох, це нормально !. Я думав, що його можна буде відновити з якогось місця.
— користувач3215

1

використовуйте утиліту " rm-trash ", яка обробляє, переносить їх у кошик для подальшого пошуку та підтримує всі параметри команди "rm".

sudo add-apt-repository ppa:nateshmbhat/rm-trash
sudo apt-get update
sudo apt-get install rm-trash

"rm-trash" є

  • призначений для використання замість rm
  • обробляє всі параметри, які може приймати rm
  • обробляє зіткнення імені файлів з файлами, які вже є в кошику
  • обробляє деякі проблеми з дозволом автоматично
  • якщо rm викликається з будь-якого іншого скрипту або опосередковано, то системна команда 'rm' використовується автоматично
  • показує відповідні повідомлення про помилки, такі як, які виникають у rm
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.