Localizando arquivos corrompidos

2

Eu tenho um diretório que tem zilhões de arquivos. Assim que tento copiar este diretório, recebo uma mensagem dizendo que um arquivo não pode ser copiado (corrompido?) E a cópia pára.

Existe algum comando que eu possa digitar no terminal que possa verificar todos os arquivos nessa árvore de diretórios e listar todos os arquivos que não puderam ser copiados ou corrompidos? Eu não gostaria de copiar os arquivos neste momento, apenas para verificar se os arquivos não seriam possíveis de copiar / ler se eu tentar.

Estou no OS X Mountain Lion, mas qualquer comando unix deve funcionar bem, espero.

obrigado.

NOTA: por corrupto quero dizer um arquivo que não pode ser lido ou copiado.

    
por SpaceDog 29.09.2012 / 12:15

1 resposta

5
  1. rsync pode ser usado para copiar diretórios e é capaz de reiniciar a cópia a partir do ponto em que foi finalizada, se algum erro fizer com que rsync morra.

    Usando a opção --dry-run do rsync você pode ver o que seria copiado sem realmente copiar nada. As opções --stats e --progress também seriam úteis. e --human-readable ou -h é mais fácil de ler.

    por exemplo,

    rsync --dry-run -avh --stats --progress /path/to/src/ /path/to/destination/

    Não tenho certeza se o rsync está instalado por padrão no Mac OS X, mas o usei em Macs, então sei que ele está definitivamente disponível.

  2. Para uma verificação rápida e suja sobre se os arquivos em um subdiretório podem ser lidos ou não, você pode usar grep -r XXX /path/to/directory/ > /dev/null . O regexp de pesquisa não importa, porque a saída está sendo descartada de qualquer maneira.

    STDOUT está sendo redirecionado para / dev / null, então você só verá erros.

    A única razão pela qual escolhi grep foi devido à sua opção -r recursion. Existem muitos outros comandos que podem ser usados em vez de grep aqui, e ainda mais se usados com find .

por 29.09.2012 / 14:29