Recuperando dados gravados no arquivo que foi movido

4

Eu tenho um daemon do Python em execução no CentOS que abre um arquivo no início de uma sessão e continua gravando nele.

No entanto, um cronjob gzipou o arquivo que estava sendo gravado e, portanto, o arquivo foi movido de log.txt para log.txt.gz. O daemon, no entanto, continuou escrevendo para log.txt. O daemon então foi parado e fechou o descritor de arquivo para log.txt.

Existe alguma maneira de recuperar os dados que foram gravados pelo daemon para log.txt depois que o arquivo foi movido para log.txt.gz?

    
por Dmitrii I. 22.03.2015 / 15:51

1 resposta

4

AFAICT, não. O problema é que o processo gzip criará um novo arquivo e liberará o anterior (o descompactado), incluindo uma remoção do diretório. Se nenhum outro link físico no sistema de arquivos estiver apontando para o arquivo, ele será perdido assim que o último descritor de arquivo se referir a ele for fechado.

No futuro, aconselhamos que você sincronize o acesso a esse arquivo de recursos, em vez de permitir que dois processos acessem simultaneamente o arquivo (para gravação e exclusão).

Outra opção é deixar gzip criar uma cópia compactada. Mas você teria uma condição de corrida em que nem todo o conteúdo gravado no arquivo poderia entrar no arquivo gz .

    
por 22.03.2015 / 16:34