Як знайти, які файли та папки були видалені нещодавно в Linux?


23

У мене є одна конкретна папка ( /home/sam/officedocuments), в якій є сотні папок і файлів. Я думаю, що я видалив деякі файли та папки помилково, але я не впевнений.

Як знайти, які файли / папки були:

  • видалено нещодавно в Linux?
  • змінився нещодавно в Linux?

Я просто хочу знати, які файли та папки були видалені. Відновлення цих видалених файлів і папок для мене не важливо.

ОС: CentOS


1
Ви повинні сказати нам, яку файлову систему ви використовуєте. Наприклад, з ext2, ext3 та ext4 Ви, можливо, можете скористатися ext3grepутилітою для пошуку інформації про видалені файли. За допомогою деяких сценаріїв слід створити просту програму, яка перераховує видалені файли на основі конкретного каталогу. Ці утиліти, однак, потребують необмеженого доступу до диска, і як такі надзвичайно небезпечні, якщо не використовуються належним чином ( незаблокування операцій лише для читання повинно бути повністю безпечним, якщо ви пам’ятаєте, що запис у той же час може призвести до того, що поточна операція поверне зламані / невірні дані ).
GoFundMonica - codidact.org

Відповіді:


3

… Нещодавно змінився в Linux?

Використовувати findдля пошуку за часом модифікації. Наприклад, щоб знайти файли, зачеплені за останні 3 дні:

find /home/sam/officedocuments -mtime -3

Для «старше 3 днів» використовуйте +3.

… Видалено нещодавно в Linux?

Досить неможливо. Коли файл видаляється, його просто немає. У більшості систем це ніде не реєструється.


Спасибі. 3 дні мені потрібно використовувати 3... що мені потрібно використовувати останні 30хвилини?
Суміт Гупта

Чи завжди Linux запитує підтвердження перед тим, як видалити будь-який файл / папку?
Суміт Гупта

16
"Досить неможливо" Це просто неправильно, і через це мені доведеться спростувати це. Часи видалення зберігаються в деяких файлових системах, прикладом таких ext3файлів є файлова система. ext3grep може допомогти при полюванні. У мене з’явився superuser.com/a/433785/132604, який містить деяку інформацію та посилання на утиліти, за допомогою яких можна знайти ( можливо, відновити занадто ) видалені файли та інформацію про них. Коли ви видаляєте файл, у більшості файлових систем він фактично не видаляється, а позначається як простір, який може бути перезаписаний за запитом.
GoFundMonica - codidact.org

Можливо, ви зможете відновити файли із резервної копії та порівняти список цих файлів із файлами у файловій системі. Це дозволить отримати список відсутніх та новостворених файлів. Відповідь Grawity вже показує, що ви можете фільтрувати вчасно, таким чином ви можете обмежити це лише видаленими файлами.
Геннес

11

Ви, ймовірно, повинні встановити інструменти інновацій . тоді ви можете використовувати inotifywaitкоманду для прослуховування подій, що відбуваються для вказаного каталогу.

Зокрема, якщо ви хочете переглянути видалені файли та папки, використовуйте це

inotifywait -m -r -e delete dir_name

і запишіть цей вихід у якийсь файл.

Сподіваюся, це вирішить вашу проблему


1
Це як найкращий підхід для цього. Є багатообіцяючий клі-додаток / демон на ім'я iwatch, який ви можете включити у свою відповідь. +1 для використання правильних інструментів для вирішення проблеми.
GoFundMonica - codidact.org

ravi, @SampoSarrala - це застосовно, якщо я хочу переглянути файли в /корені з урахуванням монтажу / демонтажу накопичувачів? Я б припустив, що в цьому випадку єдиним, що може бути збереженим для зберігання журналу видалення, буде модуль ядра, який би зачепився unlink(див. Stackoverflow.com/questions/8588386/… ); також man inotifywaitзазначає: "--рекурсивний: Попередження: ... ця опція під час перегляду ... великого дерева, може зайняти досить багато часу. Також, ..., буде досягнуто максимальної кількості перезапущених годин на користувача." за замовчуванням максимум - 8192; "
sdaau

@sdaau dmesg [| tail]має показати вам [нещодавно] кріплення / відключення, якщо саме про це ви запитуєте.
РідкоНеді

Цікаво, чи є також спосіб дізнатися, який процес видалив файл (скажімо, завдання cron), де це можливо. У вас справи про файли загадково зникають ...
Нагев

0

Linux, як правило, не вимагає підтвердження перед видаленням файлів, припускаючи, що ви використовуєте rmз командного рядка.

Щоб знайти файли, змінені протягом останніх 30 хвилин, використовуйте touch --date="HH:MM" /tmp/referenceдля створення файлу, який називається посиланням із часовою позначкою 30 хвилин тому (де HH: MM відповідає 30 хвилин тому). Потім використовуйте, find /home/sam/officedocuments -newer /tmp/referenceщоб знайти файли, новіші за посилання.

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


Просто не кажіть "пішов назавжди" ... дивіться коментарі до іншої відповіді. Зараз я відчуваю себе так: xkcd.com/386 :)
GoFundMonica - codidact.org
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.