Como verificar se todos os arquivos em um sistema de arquivos podem ser lidos sem erros?

1

Estou usando um disco rígido externo com um sistema de arquivos ext4 para fazer backups. O software de backup que eu uso (faubackup) copia a hierarquia de arquivos 1: 1 em uma pasta com o nome timestamp no disco rígido e faz backups incrementais de forma que ele vincula novas cópias de arquivos cujo conteúdo não foi alterado para o mesmo arquivo na subpasta correspondente do backup anterior. Como recentemente tive uma unidade de backup em mim, agora quero ter certeza de que todos os arquivos gravados possam ser lidos sem erro de E / S, então sei que posso confiar em meu backup.

Uma maneira de fazer isso seria ler a partição inteira, por exemplo por dd 'para /dev/null . No entanto, o disco tem 3TB, e isso levaria cerca de 7 horas (via USB 3.0).

Outra maneira seria usar e2fsck com a opção -c , mas isso também leva muito tempo.

Estou pensando que deve ser possível acelerar o processo, não verificando todo o disco, mas somente os arquivos, que são apenas uma fração do tamanho total do disco. Isto poderia ser feito, e. escrevendo todos os arquivos em um arquivo tar que não é gravado no disco, mas enviado para /dev/null . Aqui o problema é o hard linking: Se eu disser 10 backups incrementais, o armazenamento para isso é novamente apenas uma fração do disco, mas parece ser cerca de 10 vezes maior que isso.

Minha pergunta: Existe uma maneira de ler apenas os arquivos no disco, e apenas um em cada conjunto de arquivos vinculados ao mesmo espaço de armazenamento? Ou existe uma maneira de fazer com que e2fsck -c ou algo semelhante apenas verifique as partes usadas do sistema de arquivos (blocos alocados)?

    
por A. Donda 17.11.2014 / 04:29

1 resposta

2

O GNU tar não copia o conteúdo de arquivos com link físico várias vezes. Leia a primeira resposta para esta questão ou o documentação oficial sobre esse tópico. Você pode testar isso canalizando a saída (o arquivo) de tar através de wc : tar cf - -C <mountpoint of your disk> . | wc -c e verificar o tamanho do arquivo em bytes (você pode compará-lo com o resultado com a opção tar --hard-dereference ).

    
por 17.11.2014 / 06:04