Como interpretar e corrigir um erro de entrada / saída no Linux?

16

Estou executando um backup diário com o rsync. A partir de alguns dias atrás, um dos arquivos gerou esse erro durante o backup:

rsync: read errors mapping "/home/folder/file.ext": Input/output error (5)
WARNING: /home/folder/file.ext failed verification -- update discarded (will try again).

Qual é o melhor curso de ação? É apenas um arquivo quebrado? Ou há algo errado com o disco rígido no local do arquivo? Devo apenas excluí-lo e copiar uma das versões de backup para o local do arquivo? Ou há algo mais que eu deveria fazer?

    
por uncovery 16.11.2013 / 06:47

2 respostas

13

O erro de rsync

 read errors mapping ....: Input/output error (5)

indica a impossibilidade de o rsync ler ou gravar um arquivo. As causas mais prováveis desse erro são defeitos de disco, tanto no diretório SRC quanto no TGT. No entanto, outras possibilidades incluem permissões insuficientes, bloqueio de arquivos por programas antivírus e maybe de outras causas.

O primeiro passo para um diagnóstico é tentar copiar os arquivos manualmente. Isso pode funcionar se, por exemplo, a origem do erro for um defeito no disco no diretório TGT; repetindo a operação mais tarde, você escreverá em uma seção diferente do disco e o problema pode ter evaporado.

Como alternativa, você pode descobrir que não pode acessar o arquivo no diretório SRC. Nesse caso, sugiro que você use qualquer um dos utilitários de verificação de disco disponíveis para sua distribuição.

Privilégios insuficientes, antivírus, são mais fáceis de diagnosticar.

Por fim, se você tem um setor defeituoso no seu diretório SRC, você pode excluí-lo de futuras execuções do rsync por meio de

rsync -av --exclude='/home/my_name/directory_with_corrupt_files/*'
    
por 16.11.2013 / 08:27
3

Eu tive um problema parecido, tive um dispositivo montado por fusível via USB, que freqüentemente se desconectava, causando erros de E / S. Meu backup nunca poderia ser concluído porque os erros de E / S iniciariam no meio do rsync e, apesar de executar o rsync repetidamente, em algum momento, a sincronização não progrediria além da atualização dos arquivos existentes.

Minha solução foi usar

--ignore-existing 
opção

. Dessa forma, eu poderia executar a sincronização em um loop até ver um status de saída 0.

É claro que, neste caso, não me importei com atualizações de arquivos existentes.

    
por 26.12.2016 / 01:54

Tags