Como descobrir quais arquivos e pastas foram excluídos recentemente no Linux?

23

Estou tendo uma pasta específica ( /home/sam/officedocuments) que possui centenas de pastas e arquivos. Acho que excluí alguns arquivos e pastas por engano, mas não tenho certeza.

Como encontrar quais arquivos / pastas foram:

  • excluído recentemente no Linux?
  • mudou recentemente no Linux?

Eu só quero saber quais arquivos e pastas foram excluídos. Recuperar esses arquivos e pastas excluídos não é importante para mim.

SO: CentOS

Sumit Gupta
fonte
11
Você deve nos dizer qual sistema de arquivos você está usando. Por exemplo, com ext2, ext3 e ext4 Você provavelmente poderia usar o ext3greputilitário para descobrir informações sobre arquivos excluídos. Com alguns scripts, deve ser possível montar um aplicativo simples que lista os arquivos excluídos com base em um diretório específico. Esses utilitários, no entanto, precisam de acesso bruto ao disco e, como tal, são extremamente perigosos se não forem usados ​​corretamente ( operações de leitura sem bloqueio devem ser completamente seguras se você se lembrar que gravar no disco ao mesmo tempo pode fazer com que a operação atual retorne dados quebrados / incorretos ).
GoFundMonica - codidact.org

Respostas:

3

... mudou recentemente no Linux?

Use findpara pesquisar por hora da modificação. Por exemplo, para encontrar arquivos tocados nos últimos 3 dias:

find /home/sam/officedocuments -mtime -3

Para "mais de 3 dias", use +3.

... excluído recentemente no Linux?

Praticamente impossível. Quando um arquivo é excluído, ele simplesmente desaparece. Na maioria dos sistemas, isso não é registrado em nenhum lugar.

gravidade
fonte
Obrigado. Por 3 dias, preciso usar 3... o que preciso usar nos últimos 30minutos?
Sumit Gupta
O Linux sempre pede confirmação antes de excluir qualquer arquivo / pasta?
Sumit Gupta
16
"Praticamente impossível" Isso está totalmente errado e, por isso, tenho que rebater isso. Os tempos de exclusão são armazenados em alguns sistemas de arquivos, o exemplo de fs é o ext3sistema de arquivos. O ext3grep pode ajudar ao caçar. Eu recebi superuser.com/a/433785/132604 que possui algumas informações e links para utilitários que podem ser usados ​​para encontrar ( possivelmente recuperar também ) arquivos excluídos e informações sobre eles. Quando você exclui um arquivo, na maioria dos sistemas de arquivos, ele não é realmente removido, mas marcado como espaço que pode ser sobrescrito por demanda.
GoFundMonica - codidact.org
Você pode restaurar arquivos de um backup e comparar uma lista desses arquivos com os do sistema de arquivos. Isso produziria uma lista de arquivos ausentes e recém-criados. A resposta do Grawity já mostra que você pode filtrar a tempo, portanto, pode limitar isso apenas aos arquivos excluídos.
Hennes
11

Você provavelmente deve instalar o Inotify Tools . então você pode usar o inotifywaitcomando para escutar eventos que estão acontecendo no diretório especificado.

Especificamente, se você deseja assistir a arquivos e pastas excluídos, use este

inotifywait -m -r -e delete dir_name

e registre essa saída em algum arquivo.

Espero que isso resolva seu problema

Ravi
fonte
11
Parece a melhor abordagem para isso. Há um promissor cli-app / daemon chamado iwatch que você pode querer incluir em sua resposta. +1 por usar as ferramentas certas para resolver o problema.
GoFundMonica - codidact.org
ravi, @SampoSarrala - isso é aplicável se eu quiser assistir arquivos na /raiz, levando em consideração as unidades de montagem / desmontagem? Eu acho que, nesse caso, a única coisa viável para manter um log de exclusão seria um módulo do kernel que se conectaria unlink(consulte stackoverflow.com/questions/8588386/… ); também man inotifywaitafirma: "--recursive: Aviso: ... esta opção enquanto assiste ... a uma árvore grande, pode demorar um pouco. Além disso, ..., será atingida a quantidade máxima de inotify watchs por usuário. o padrão máximo é 8192; "
sdaau 31/01/15
O @sdaau dmesg [| tail]deve mostrar-lhe montagens / desmontagens [recentes], se é isso que você está perguntando.
SeldomNeedy 20/05
Gostaria de saber se existe também uma maneira de descobrir qual processo excluiu o arquivo (digamos, um trabalho cron), quando aplicável. Tenha um caso de arquivos desaparecendo misteriosamente ...
Nagev
0

O Linux geralmente não pede confirmação antes de remover arquivos, supondo que você esteja usando rmna linha de comando.

Para localizar arquivos modificados nos últimos 30 minutos, use touch --date="HH:MM" /tmp/referencepara criar um arquivo chamado reference com um carimbo de data e hora de 30 minutos atrás (em que HH: MM corresponde a 30 minutos atrás). Em seguida, use find /home/sam/officedocuments -newer /tmp/referencepara encontrar arquivos mais recentes que a referência.

Se você excluiu arquivos usando uma ferramenta GUI, eles ainda podem estar em algum tipo de "lixeira". Depende do que você está usando para um ambiente de área de trabalho. Se você usou rmna linha de comando, tente um dos utilitários mencionados nesta resposta . (Dica de chapéu para @ Sampo para esse link.)

bstpierre
fonte
Apenas não diga "se foi para sempre" ... veja comentários em outra resposta. Agora me sinto assim: xkcd.com/386 :)
GoFundMonica - codidact.org