Recuperar o arquivo excluído que está sendo gravado no momento

6

Comecei a baixar um arquivo grande e deletei acidentalmente há algum tempo. Eu sei como obter seu conteúdo atual em cp ing /proc/<pid>/fd/<fd> , mas como o download ainda está em andamento, ele estará incompleto no momento em que eu copiá-lo em outro lugar.

Posso, de alguma forma, recuperar o arquivo no momento em que o download termina, mas antes que o downloader feche o arquivo e eu o perca para sempre?

    
por daniel.jackson 26.02.2012 / 16:26

2 respostas

9

Usar tail no modo de acompanhamento deve permitir que você faça o que quiser.

tail -n +0 -f /proc/<pid>/fd/<fd> > abc.deleted

Acabei de fazer um teste rápido e parece funcionar aqui. Você não mencionou se seu arquivo era um arquivo binário ou não. Minha principal preocupação é que ele não pode copiar do início do arquivo, mas o argumento -n +0 deve fazer isso mesmo para arquivos binários.

O comando tail não pode terminar no final do download, então você mesmo precisará finalizá-lo.

    
por 26.02.2012 / 17:46
3

Na verdade, eu tive outro pensamento. Se você usar outro comando para ler /proc/<pid>/fd/<fd> e manter esse programa em execução, quando concluir o download, poderá copiá-lo do arquivo /proc/<pid2>/fd/<fd2> apropriado do segundo comando.

Apenas tente

less /proc/<pid>/fd/<fd>

em um shell separado. Observar a entrada / proc do comando less deve mostrar seu arquivo excluído.

    
por 26.02.2012 / 17:49