Відповіді:
Немає загального "скасування" для кожної операції в терміналі. Якщо ви хочете відновити файл після використання, rm
вам потрібно буде переглянути програмне забезпечення для відновлення.
Варіант, щоб запобігти вам майбутніх помилок, - це зробити alias
альтернативні команди для видалення файлів. Додайте їх до своїх ~/.bashrc
і отримайте звичку використовувати їх замість rm
.
псевдонім rmi = 'rm -i'
Якщо ви користуєтесь rmi
, вам буде запропоновано підтвердити майбутні видалення. Намагайтеся уникати розвитку звички натискати y
відразу після того, як ви видасте rmi
команду, оскільки це переможе мету.
Ви також можете переміщати файли, видалені trsh
командою в терміналі, до свого кошика (у KDE та Gnome):
alias trsh='mv --target-directory="$HOME/.Trash"'
Якщо ви користуєтесь trsh
, у вас буде обмежена можливість "відновити". Остерігайся цього
trsh dir1/file1 dir2/file1
все ще може призвести до невідшкодування втрати даних.
rm
в rm -i
тому, що ви звикаєте до захисної сітки, яку вона вам дає. Потім ви переходите на іншу машину, у якої немає цього псевдоніма ...
rmi
-> rm -i
. Це дійсно помилка просто перешкоджати існуючій програмі шляхом її отримання.
Для командного рядка немає кошика.
Ви можете спробувати деякі з видалених утиліт, але немає гарантії, що вони працюватимуть.
Ви можете використовувати trash-cli, якщо ви використовуєте KDE під час запуску gui. Це утиліта командного рядка для видалення / відновлення за допомогою сміття KDE.
alias rm=trash
так, щоб у ваших типових викрутках командного рядка були кнопки скасування.
alias rm=trash
це потенційно небезпечно, якщо є якийсь шанс ви один день скористаєтеся чужою системою і забудете (або ssh). Набагато безпечніше просто звикати писати trash
замість цього rm
.
Ви можете зробити rm
псевдонім для trash
команди (Вам потрібно буде встановити trash
спочатку.) Додайте це до свого ~/.bashrc
:
alias rm='trash'
Це бажано, alias rm='mv --target-directory=$HOME/.Trash'
оскільки ~ / .Trash НЕ папка для сміття для gnome. Краще IMHO дозволити trash
з'ясувати, де знаходиться фактична папка сміття.
btw Я б опублікував це в коментарі, але мені не вистачає представника.
Ще два технічні рішення поки не названі:
Тут є велике питання, на яке варто звернутися. Команди оболонки не балакачі (вони не перевіряють, що ви хочете), і вони очікують, що ви знаєте, що ви робите. Це є основним для того, як вони розроблені . Це особливість, а не помилка.
Деякі люди відчувають себе мачо , коли вони використовують такі команди, які я думаю , це досить безглуздо, але це важливо розуміти небезпеку. Ви можете зробити велику шкоду в терміналі, навіть якщо ви не root. Я думаю, ви, мабуть, справді просто потурбувалися rm
, але оскільки ви сказали "Чи можемо ми скасувати операції, виконані в терміналі", я подумав, що це варто сказати. Загальна відповідь - ні, ви не можете.
Варіант 1: Див. Скасувати видалення файлів Linux з файлової системи ext2 . Ця сторінка вказує на програму, написану Себастьяном Хетце з компанії LunetIX, яка (як показує заголовок) скасовує нещодавно видалені файли з файлової системи ext2. Приклад використання:
# undelete -d /dev/hdc3 -a 10
Попередження:
Варіант 2: На моїй машині працює rsnapshot (rsync), що робить знімки щогодини з вибраних папок. Він поступово робить це щогодини, 2 години або все, що ви скажете CRON робити. Після повного дня він переробляє ці знімки в один щоденний знімок і через 7 днів у тиждень тощо. Це змушує мене повертатися в часі приблизно на місяць або близько кожної години! Це досить добре з дисковим простором, оскільки він створює символічні посилання на файли, які ніколи не змінювалися ...
Відновити за допомогою grep on /dev/partition
( Linux або Unix Recover видалені файли - відновити файли ),
grep -b 'search-text' /dev/partition > file.txt
Просто спробуйте.
Існують видалені утиліти для ext2, але більшість інших файлових систем Linux застрягли в кам'яному віці і не мають жодних розширених функцій користування. Сумний стан справ, враховуючи гігантські диски з достатньою кількістю місця, щоб більше ніколи не видаляти файл, є звичайною справою.
Таким чином, ви затримали три варіанти:
Регулярно створюйте резервні копії, наприклад, за допомогою команди типу:
rsync -axvRP --backup --backupdir=/backup/incr/$(date -I) /home/ /backup/root/
Використовуйте інструмент контролю версій, наприклад, git
для всієї вашої роботи. Хоча це не захистить від шаленого, rm -r
що вбиває сховище, він захистить від регулярних неприємностей, оскільки ви будете використовувати git rm
не в сирому вигляді rm
.
Будьте особливо обережні і не довіряйте занадто багато rm -i
, trash-cli
і друзів, так як більшість даних , які ви втратите на корпусі ви не втратите від випадкового rm
, але неправильно адресованих труби, неправильно набраний вихідних файлів, невірно mv
та інше, тобто, то , що буде перезаписувати ваші дані, а не просто видаляти їх.
Зробіть усі три для максимальної безпеки.
перевірте це ... може бути корисним http://artmees.github.io/rm/
припустимо, що ти зробив
rm very_important_file
від терміналу. відновлення цього файлу - копітка і не завжди успішна процедура
замість цього, якщо ви використовували згадуваний сценарій. вам не доведеться турбуватися з цього приводу, тому що
rm very_important_file
mv very_important_file ~/.Trash/
рівнозначні. сценарій обробляє більше випадків і зовсім не змінює вашу систему, rm
і це тому, що він поміщений у локальну папку бін користувача, щоб він затіняв систему rm, але все ж не впливав на неї та не вимикав її використання
це вдосконалений підхід, але не втрачаючи жодної функції
Для мене (openuse стрибок 42.2, NTFS pendrive) PhotoRec - також testdisk
творці - працював :) Однак він не відновив імена файлів.
PhotoRec - це програмне забезпечення для відновлення даних, призначене для відновлення втрачених файлів, включаючи відео, документи та архіви з жорстких дисків, компакт-дисків та втрачених фотографій (таким чином, ім'я відновлення фотографій) з пам'яті цифрової камери. PhotoRec ігнорує файлову систему та переходить за основними даними, тому вона все ще працюватиме, навіть якщо файлова система вашого медіа була сильно пошкоджена або переформатована.
Я встановив його за допомогою стандартних сховищ у OpenSUSE
rm
: від’єднує файл від ньогоinode
. Питання: "Куди йдуть файли, колиrm
команда видається" -> unix.stackexchange.com/questions/10883/… також може бути корисним для вас.