Как узнать, какие файлы и папки были недавно удалены в Linux?

23

У меня есть одна конкретная папка ( /home/sam/officedocuments), которая имеет сотни папок и файлов. Я думаю, что я удалил некоторые файлы и папки по ошибке, но я не уверен.

Как найти, какие файлы / папки были:

  • недавно удалил в линуксе?
  • недавно меняли в линуксе?

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

ОС: CentOS

Сумит Гупта
источник
1
Вы должны сказать нам, какую файловую систему вы используете. Например, с ext2, ext3 и ext4 Вы можете использовать ext3grepутилиту для поиска информации об удаленных файлах. С некоторыми сценариями должно быть возможно собрать простое приложение, которое выводит список удаленных файлов на основе определенного каталога. Однако этим утилитам необходим необработанный доступ к диску, и поэтому они крайне опасны, если не используются должным образом ( неблокирующие операции только для чтения должны быть полностью безопасными, если вы помните, что одновременная запись на диск может привести к тому, что текущая операция вернет поврежденные / неверные данные ).
GoFundMonica - codidact.org

Ответы:

3

... недавно изменился в Linux?

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

find /home/sam/officedocuments -mtime -3

Для «старше 3 дней» используйте +3.

... недавно удалили в Linux?

Практически невозможно. Когда файл удален, он просто исчез. На большинстве систем это нигде не регистрируется.

grawity
источник
Спасибо. В течение 3 дней мне нужно использовать 3... что мне нужно использовать в последние 30минуты?
Сумит Гупта
Linux всегда запрашивает подтверждение перед удалением какого-либо файла / папки?
Сумит Гупта
16
«Практически невозможно». Это просто неправильно, и из-за этого я должен понизить это. Время удаления хранится в некоторых файловых системах, примером такой ext3файловой системы является файловая система. ext3grep может помочь при поиске. Я получил superuser.com/a/433785/132604, в котором есть некоторая информация и ссылки на утилиты, которые можно использовать для поиска ( возможно, восстановления ) удаленных файлов и информации о них. Когда вы удаляете файл, в большинстве файловых систем он фактически не удаляется, а помечается как пространство, которое может быть перезаписано по требованию.
GoFundMonica - codidact.org
Возможно, вы сможете восстановить файлы из резервной копии и сравнить список этих файлов с файлами в файловой системе. Это даст список отсутствующих и вновь созданных файлов. Ответ Grawity уже показывает, что вы можете фильтровать по времени, таким образом, вы можете ограничить это только удаленными файлами.
Хеннес
11

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

В частности, если вы хотите следить за удаленными файлами и папками, используйте это

inotifywait -m -r -e delete dir_name

и записать этот вывод в некоторый файл.

Надеюсь, что это решит вашу проблему

Рави
источник
1
Звучит как лучший подход для этого. Существует многообещающее приложение cli -app / daemon с именем iwatch, которое вы можете включить в свой ответ. +1 за использование правильных инструментов для решения проблемы.
GoFundMonica - codidact.org
ravi, @SampoSarrala - это применимо, если я хочу просматривать файлы в /корне, принимая во внимание монтирование / размонтирование дисков? Я полагаю, что в этом случае единственной вещью, пригодной для ведения журнала удаления, будет модуль ядра, к которому можно подключиться unlink(см. Stackoverflow.com/questions/8588386/… ); также man inotifywaitгласит: "--recursive: Warning: ... эта опция при просмотре ... большого дерева может занять некоторое время. Кроме того, ... будет достигнуто максимальное количество часов inotify на пользователя. максимальное значение по умолчанию - 8192; "
sdaau
@sdaau dmesg [| tail]должен показать вам [последние] монтирования / размонтирования, если вы об этом.
SeldomNeedy
Интересно, есть ли способ узнать, какой процесс удалил файл (скажем, задание cron), где это применимо. Есть случай, когда файлы загадочно исчезают ...
Нагев
0

Linux обычно не запрашивает подтверждения перед удалением файлов, если вы используете его rmиз командной строки.

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

Если вы удалили файлы с помощью инструмента с графическим интерфейсом, они все еще могут находиться в «мусорном ведре». Это зависит от того, что вы используете для рабочего стола. Если вы использовали rmиз командной строки, попробуйте одну из утилит, упомянутых в этом ответе . (Шляпа для @Sampo по этой ссылке.)

bstpierre
источник
Только не говори "ушел навсегда" ... см. Комментарии к другому ответу. Теперь я чувствую себя так: xkcd.com/386 :)
GoFundMonica - codidact.org