recupera arquivos se ainda estiver sendo usado por um processo

0

Eu me deparei com um problema em que acidentalmente apaguei o conteúdo de um arquivo conf. Eu estou tentando usar o processo de recuperação de cp e cauda que eu vi online, mas não parece estar funcionando. O arquivo ainda está na memória:

# ps aux | grep 'process'
root     30495  0.0  0.0  23660   728 ?        S     2015   0:17 /usr/local/sbin/file -C /etc/dir/file.cfg

O conteúdo de / proc / pid é o seguinte:

ls -l /proc/30495/fd/0
lrwx------. 1 root root 64 Mar  7 11:35 /proc/30495/fd/0 -> socket:[1278416]

Método de recuperação de CP:

cp /proc/30495/fd/0 recovered.cfg
cp: cannot open '/proc/30495/fd/0' for reading: No such device or address

Recuperação de cauda:

tail -c +0 -f /proc/30495/fd/0 recovered.cfg
tail: cannot open '/proc/30495/fd/0' for reading: No such device or   address
tail: cannot open 'recovered.cfg' for reading: No such file or directory

Há mais alguma coisa que eu possa fazer para tirar o conteúdo desse arquivo da RAM?

    
por user53029 07.03.2016 / 20:51

1 resposta

1

A solução certa é recuperar o arquivo do último backup.

Copiar de /proc/PID/fd/ só funciona se o processo tiver o arquivo aberto no momento. Não pode fazer nada sobre um arquivo que o processo tenha aberto em algum momento no passado, mas não o faz mais. Um programa não precisa manter seu arquivo de configuração aberto: uma vez lida sua configuração, ele fecha o arquivo. Você não vai recuperar nada assim. O arquivo que você está tentando recuperar é um arquivo não relacionado; é um soquete de rede que o processo está escutando, e você não pode ler dados de um soquete como este, não que isso seja bom para você.

gcore 30495 conforme sugerido por Mark Plotnick despejaria uma imagem de memória do processo no arquivo core.30495 . Você pode tentar filtrar essa imagem de memória, mas não espere: há uma boa chance de o processo ter analisado o arquivo de configuração e reutilizado a memória armazenada para outros propósitos. É até provável que todo o arquivo de configuração nunca tenha sido totalmente gravado na memória, apenas peça por peça e cada peça substituiu a anterior.

Você pode tentar ferramentas de recuperação de arquivos excluídos . Se você vai tentar isso, pare de escrever para aquele sistema de arquivos imediatamente : cada gravação que você faz reduz suas chances de recuperar qualquer coisa. Mas, mais uma vez, não espere: encontrar um arquivo de texto é uma agulha num palheiro. Se você encontrar algo, tome cuidado para que ele possa ser uma versão antiga, e muitas vezes não há como saber.

Para o futuro, lembre-se de fazer backups. E coloque seus arquivos de configuração sob controle de versão (e faça backup do repositório).

    
por 08.03.2016 / 02:52