Erro de exclusão do comando rsync “Erro de IO encontrado - ignorando a exclusão do arquivo”

16

Eu uso o comando rsync para fazer backup de arquivos de um dos meus servidores ubuntu para outra máquina ubuntu. O servidor de backup aciona um script que usa o comando rysnc. Aqui está o comando que eu uso

rsync -rltvh --partial --stats --exclude = .beagle / --exclude =. * --delete após a raiz @ live_server: / home / / home / live_server_backup / home >> /tmp/logfile.log 2> & 1

O live_server é compatível com ssh sem senha. Então funciona. Agora o problema é com

- opção de exclusão após

Depois de todo o arquivo sincronizado. No final, eu posso ver o procedimento de exclusão skipped.logfile erro é como

Erro de E / S encontrado - ignorando a exclusão do arquivo

Quando tentei encontrar o log, houve algum erro ao sincronizar o arquivo

rsync: send_files falhou ao abrir "/home/xyz/Desktop/PPT_session_1_context.pdf": permissão negada (13)

Portanto, meu entendimento é que o rsync não pôde ler todos os arquivos do destino por motivos de segurança, pois está pulando a exclusão do arquivo.

Existe alguma maneira de executar o trabalho --delete-after, mesmo que haja algum erro de permissão? Eu não quero usar a exclusão de força, pois será perigoso em alguma situação.

XemX
fonte
11
Pssst de novo ... Você realmente deveria.
Armel Larcier

Respostas:

13

Nota adicional sobre este problema:

vanished filenão deve acionar a condição IO error encountered -- skipping file deletion, mas isso geralmente acontece quando você está criando um backup de um sistema ativo.

Isso é coberto pelo bug rsync nº 7809 ( https://bugzilla.samba.org/show_bug.cgi?id=7809 ) e deve ser resolvido na próxima versão 3.1.0.

Enquanto isso, use:

--ignore-errors         delete even if there are I/O errors
reto
fonte
19

Na página do manual rsync:

--ignore-errors         delete even if there are I/O errors

Isso resolverá o seu problema.

SickAnimations
fonte
2

Você deve usar um arquivo de exclusão para rsyncignorar os arquivos que não podem ler. A lista pode ser gerada find . -exec test -r '{}'no diretório de origem e depois massageada no formato de arquivo de exclusão rsyncdesejado.

Kyle Jones
fonte
na verdade, meu diretório de origem é bastante grande (10 a 12 GB). Portanto, cada vez que encontrar arquivos (sem permissão de leitura) não será uma maneira eficiente. o que você diz?
XemX 07/12/12
Execute-o uma vez para criar a lista de exclusão e não execute-o novamente, a menos que um monte de novos arquivos ilegíveis sejam adicionados. O rsync está fazendo a mesma travessia de árvore, portanto não deve ser tão ruim assim.
Kry Jones #
Sim. Mas é assim que o meu cenário é. O diretório de origem diário pode apresentar esses arquivos. e preciso fazer backup dos novos arquivos na máquina de backup.
XemX 07/12/12
Existe uma solução funcional para isso? Também uso o rsync para backups de um sistema ativo e, quando há um erro de E / S na máquina de leitura, os arquivos são excluídos na máquina de destino, o que NÃO DEVE ACONTECER!
bzero