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

21

Estou executando um backup diário com o rsync. Desde alguns dias atrás, um dos arquivos lançou 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 / mais que devo fazer?

descoberta
fonte

Respostas:

17

O erro rsync

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

indica a impossibilidade do rsync de ler ou gravar um arquivo. As causas mais prováveis ​​desse erro são defeitos de disco, no diretório SRC ou no TGT. Outras possibilidades, no entanto, incluem permissões insuficientes, bloqueio de arquivos por programas antivírus e maybeoutras 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 de disco no diretório TGT; repetindo a operação posteriormente, você gravará 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ê tiver um setor defeituoso no diretório SRC, poderá excluí-lo de futuras execuções do rsync por meio de

rsync -av --exclude='/home/my_name/directory_with_corrupt_files/*'
MariusMatutiae
fonte
Obrigado! Correndo o risco de ser outra pergunta, como descobrir se é o diretório SRC ou TGT se posso excluir privilégios ou antivírus?
uncovery
Um antivírus bloqueia arquivos por algum tempo. Se esse for o problema, tentar novamente o mesmo comando algum tempo depois não deve apresentar o mesmo erro. A questão dos privilégios é fácil: use a conta root nas máquinas SRC e TGT. Se você não conseguir fazer isso, verifique se os arquivos nos quais o rsync falha falha estão acessíveis para você, ou seja, pertencem à conta que está tentando acessá-los e, se não o fazem, você tem acesso de leitura a eles. Se isso resolver o seu problema, lembre-se de aceitar minha resposta, é útil para outros leitores.
MariusMatutiae
Você não entendeu meu comentário acima. Deixa pra lá, vou fazer uma nova pergunta.
descoberta em 17/11/2013
TGT é apenas alvo, certo? Talvez seja melhor apenas dizer alvo, então.
Jasper
Parece que sua resposta deu origem a um artigo inteiro bobcares.com/blog/rsync-input-output-error_5 (sem referências, é claro).
Yaroslav Nikitenko
3

Eu tive um problema semelhante, um dispositivo montado em fusível via USB, que desconectava frequentemente, causando erros de entrada / saída. Meu backup nunca pôde terminar porque os erros de E / S começariam no meio do rsync e, apesar de executar o rsync repetidamente, em algum momento a sincronização não avançaria 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.

Obviamente, nesse caso, não me importei com atualizações nos arquivos existentes.

user84207
fonte
0

Eu tenho 2 unidades externas que mantenho sincronizadas, usando rsync. Realizo essa tarefa regularmente em uma das duas máquinas e alterno frequentemente de uma para outra por conveniência. Eu tenho 4 máquinas executando o Debian 9 e utilizo essas unidades em cada uma delas.

Esta manhã usei o seguinte:

rsync -ahv --delete drive-x drive-y 

e ficou surpreso por ter algumas centenas de falhas relatadas.

principalmente: rsync: readlink_stat... failed: Input/output error (5)
também:rsync: rsync: recv_generator: mkdir ... failed: Read-only file system (30)

No processo para descobrir o que aconteceu, eu remontei as unidades duas vezes, reiniciei, corri rsyncsem --deletee basicamente minhas tentativas normais de corrigir algo que funcionou de maneira confiável por um longo tempo. Até pensei em instalar rsyncnovamente. Antes de fazer isso, decidi rsyncpelas 2 unidades na outra máquina, que eu executo offline. rsyncfuncionou da maneira que deveria.

Depois de ler o material postado aqui, instalei clamav, atualizei as assinaturas e verifiquei meu diretório pessoal. Eu uso isso regularmente em uma máquina diferente. Encontrei 1 e apenas 1 PUA e o apaguei. Eu sempre apago PUA's. Em seguida, remontei as duas unidades com esta máquina e adicionei diferentes arquivos e pastas de teste a cada unidade.

Eu corri rsync -ahv --delete drive_x drive_ye tudo funcionou bem.

user1003553
fonte