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

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

Eu corrompei o sistema de arquivos. Gostaria de copiar "sobreviventes", permanecendo arquivos bons. Então, minha pergunta é: como copiar apenas arquivos bons de um diretório para outro.

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

Bom arquivo-- um arquivo que pode ser lido do início ao fim sem nenhum erro de E/S.

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

Atualizar: por razões práticas, é necessário que o máximo de tentativas de leitura do arquivo possa ser especificado, caso contrário, a ferramenta poderá cair facilmente em um loop infinito apenas tentando ler um arquivo repetidamente. Por exemplo, se um determinado pedaço de arquivo não puder ser lido (devido a um erro de E/S) e houver X tentativas - presuma que o arquivo não é bom.

Responder1

Existe um utilitário chamado ddrescueou dd_rescue. Esses são dois utilitários diferentes que usam abordagens diferentes para fazer a mesma coisa. Eles copiam os dados de A para B, mas, diferentemente do cp, não falham, mas repetem as tentativas diversas 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 em arquivos manualmente ou com arquivos find.
No entanto, recomendo, se possível, copiar dd_rescuetoda 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.

Responder2

O mais fácil deve ser executar um fsck -aou fsck -yno 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 irão para seu local original, os outros irão para /lost+found- onde, se você quiser, você pode tentar recuperar algo deles.

As opções mencionadas fazem o seguinte:

As opções para diferentes fscks específicos do sistema de arquivos não são padronizadas. Em caso de dúvida, consulte as páginas de manual do verificador específico do sistema de arquivos. Embora não seja garantido, as seguintes opções são suportadas pela maioria dos verificadores de sistema de arquivos:

-a Repare automaticamente o sistema de arquivos sem qualquer dúvida (use esta opção com cuidado). Observe que e2fsck(8) suporta -a apenas para compatibilidade com versões anteriores. Esta opção é mapeada para a opção -p do e2fsck, que é segura para uso, ao contrário da opção -a que alguns verificadores de sistema de arquivos suportam.

(...)

- sim Para alguns verificadores específicos do sistema de arquivos, a opção -y fará com que o fsck específico do fs sempre tente corrigir automaticamente qualquer corrupção detectada no sistema de arquivos. Às vezes, um especialista pode conseguir dirigir melhor o fsck manualmente. Observe que nem todos os verificadores específicos do sistema de arquivos implementam esta opção. Em particular, fsck.minix(8) e fsck.cramfs(8) não suportam a opção -y no momento em que este livro foi escrito.

informação relacionada