Como copiar apenas arquivos bons de um diretório para outro?

3

Eu tenho corrompido o sistema de arquivos. Eu gostaria de copiar "sobreviventes", permanecendo bons arquivos. Então, minha pergunta é: como copiar somente arquivos bons de um diretório para outro.

Por favor, note que, por exemplo, um arquivo pode ter 10GB e é possível copiar 5GB dele. Portanto, se a ferramenta responsável pela cópia usar o diretório de destino imediatamente para armazenar o conteúdo copiado, ele deverá remover esse arquivo parcial assim que ficar claro que é impossível copiar o arquivo inteiro (porque é ilegível).

Arquivo bom - um arquivo que pode ser lido do começo ao fim sem qualquer erro de E / S.

Importante : deve ser feito automaticamente, ou seja, sem interação do usuário (com a interação do usuário, eu já estou usando o Midnight Commander).

Atualização : por razões práticas, é necessário especificar o máximo de tentativas para ler o arquivo, caso contrário, a ferramenta pode cair facilmente em loop infinito, apenas tentando ler um arquivo repetidas vezes. Por exemplo, se um dado pedaço de arquivo não pode ler (por causa do erro de I / O) e houve X tentativas - assuma que o arquivo não é bom.

    
por greenoldman 01.10.2016 / 18:08

2 respostas

1

Existe um utilitário chamado ddrescue ou dd_rescue . Esses são dois utilitários diferentes que usam abordagens diferentes para fazer a mesma coisa. Eles copiam dados de A para B, mas, diferentemente do cp, eles não falham, mas repetem as tentativas várias vezes e pulam caso não consigam ler os dados.
Esses utilitários não reconhecem o sistema de arquivos, mas você pode executá-los nos arquivos manualmente ou com find .
No entanto, eu recomendo, se possível, usar dd_rescue para copiar toda a unidade danificada em um único arquivo de imagem em algum local seguro, depois montar essa imagem e copiar os arquivos de lá da maneira usual. A imagem será legível sem erros.
Use dd_recue primeiro.

    
por 02.10.2016 / 23:22
0

O mais fácil deve ser executar um fsck -a ou fsck -y no sistema de arquivos corrompido (se for o sistema de arquivos raiz, inicialize com um Live CD e monte-o como um volume externo). Todos os arquivos que podem ser recuperados acabarão em seu local original, os outros serão exibidos em /lost+found - onde, se você se sentir inclinado, poderá tentar recuperar alguma coisa deles.

As opções mencionadas são as seguintes:

Options to different filesystem-specific fsck's are not standardized. If in doubt, please consult the man pages of the filesystem-specific checker. Although not guaranteed, the following options are supported by most file system checkers:

-a Automatically repair the file system without any questions (use this option with caution). Note that e2fsck(8) supports -a for backwards compatibility only. This option is mapped to e2fsck's -p option which is safe to use, unlike the -a option that some file system checkers support.

(...)

-y For some filesystem-specific checkers, the -y option will cause the fs-specific fsck to always attempt to fix any detected filesystem corruption automatically. Sometimes an expert may be able to do better driving the fsck manually. Note that not all filesystem-specific checkers implement this option. In particular fsck.minix(8) and fsck.cramfs(8) does not support the -y option as of this writing.

    
por 01.10.2016 / 21:35