Чи можна відновити файли / каталоги, видалені за допомогою 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.