Linux: Recuperando uma pasta deletada em que outro terminal ainda é cd'ed

0

Eu apaguei acidentalmente o diretório /path/to/dir e todo o seu conteúdo de um aplicativo.

No entanto, ainda tenho uma janela de terminal aberta, ainda cd -ed em /path/to/dir !

P: Existe alguma maneira de recuperar recursivamente /path/to/dir ?

Note que lsof me dá isto:

$ lsof | egrep '/path/to'
bash       3113              hs  cwd       DIR              252,0     4096 42207179 /path/to
bash       3487              hs  cwd       DIR              252,0        0 42207253 /path/to/dir (deleted)

Além disso, se eu fizer isso ...

$ ls /proc/3487/fd/
0  1  2  255

$ cd /tmp
$ dd if=/proc/3487/fd/255 of=recovered.dir bs=1M

... o comando dd apenas fica lá sem fazer nada, com o tamanho de recovered.dir não crescendo. Eu estava assumindo aqui que o processo 3487 tem o diretório /path/to/dir open no descritor de arquivo 255, e assim, se eu dd ou cat , eu seria capaz de recuperar a árvore inteira /path/to/dir . / p>

Existem muitos artigos na web sobre como usar lsof para recuperar arquivos regulares , mas nenhum para recuperar diretórios deletados.

Muito agradeceria uma resposta rápida !!

    
por Harry 19.10.2014 / 06:50

1 resposta

3

Infelizmente, você não pode fazer o que procura.

Enquanto o diretório pode ser mantido aberto, os arquivos que residem no diretório não fazem parte do próprio diretório. O diretório simplesmente armazena os nomes dos arquivos. Além disso, com os arquivos excluídos, o diretório já foi modificado para remover esses arquivos.

Em resumo, a menos que cada arquivo individual seja mantido aberto, eles não poderão ser recuperados dessa maneira.

    
por 19.10.2014 / 08:45