suprimir aviso rsync: alguns arquivos desapareceram antes que pudessem ser transferidos

11

Recebo muitos avisos ao fazer backup dos arquivos em execução do servidor Postfix e Courier, como:

file has vanished: /var/kunden/mail/username/[email protected]/tmp/courier.lock

Como faço para suprimir esses avisos de rsync ao executá-lo do Cron /usr/bin/rsnapshot hourly ?

Posso de alguma forma excluir esses diretórios?

/var/kunden/mail/*/*/tmp/

a pasta tmp pode ser mais profunda também, por exemplo:

file has vanished: /var/kunden/mail/username/[email protected]/.Presse/tmp/1353871473.M716135P32214_imapuid_36.test.de
file has vanished: /var/kunden/mail/username/[email protected]/.Presse/tmp/courier.lock
    
por rubo77 15.08.2013 / 16:39

6 respostas

6

Você pode usar o switch exclude de rsync ( --exclude ):

$ rsync -avz --exclude '**/tmp/' source/ destination/

Especificado desta forma --exclude '**/tmp/' irá ignorar qualquer caminho que inclua a string /tmp/ . Você pode fornecer padrões para esses argumentos também.

Exemplo

$ rsync -avz --exclude '/path/to/*/tmp/' source/ destination/

Será excluído nos caminhos do formulário: /path/to/*/tmp/ .

    
por 15.08.2013 / 17:44
12

O motivo é que esses arquivos já existiam enquanto o rsync está criando a lista de arquivos a serem transferidos, mas eles são removidos antes da transferência.

É uma massagem de aviso, não um erro. No entanto, você deve tentar descobrir por que esse arquivo foi excluído, talvez seja importante.

Para ignorar esse aviso, você pode usar a opção --exclude como a pergunta acima ou usar a opção -ignore-missing-args rsync, fazendo o rsync ignorar os arquivos desaparecidos: %código% talvez ajude.

    
por 27.07.2016 / 05:47
12

Infelizmente, ao contrário do que está descrito na solução SWdream, --ignore-missing-args não tem impacto nos arquivos desaparecidos. Ele simplesmente ignorará argumentos de origem que não existem.

Veja man rsync :

  --ignore-missing-args
          When rsync is first processing the explicitly  requested  source
          files  (e.g. command-line arguments or --files-from entries), it
          is normally an error if the file cannot be found.   This  option
          suppresses  that  error,  and does not try to transfer the file.
          This does not affect subsequent vanished-file errors if  a  file
          was initially found to be present and later is no longer there.

A maneira "oficial" de ignorar arquivos desaparecidos é usar esse script do repositório oficial de fontes rsync: link

que é muito semelhante ao que o @kenorb e @ gilles-quenot disseram.

    
por 23.03.2017 / 11:57
3

O erro significa que rsync não pode mais encontrar os arquivos existentes durante a construção da lista a ser transferida. Esses erros de arquivos desaparecidos acontecem quando um arquivo foi inicialmente encontrado e mais tarde não está mais lá. Em alguns casos, isso também acontece quando os arquivos de origem estão corrompidos ou possuem caracteres inválidos no nome (portanto, fsck é aconselhado).

Basicamente, isso é um aviso, não um erro, então nada para se preocupar, já que o estado de cada arquivo de destino reflete um estado dos arquivos de origem correspondentes durante a execução.

Se estiver causando problema porque o valor de saída é diferente de zero, isso pode ser resolvido pelo seguinte script de wrapper ( source ):

#!/bin/bash
(rsync "$@"; if [ $? == 24 ]; then exit 0; else exit $?; fi) 2>&1 | grep -v 'vanished'

ou pelo seguinte script de solução alternativa ( fonte ):

#!/bin/sh
OUT='/usr/bin/snapback2 2>&1'
RET=$?
if [ "$RET" != "23" -a "$RET" != "0" -a "$RET" != 24 ]; then
    echo "$OUT"
    exit $RET
fi

que basicamente existe com os mesmos códigos de erro que o rsync se o rsync falhar.

Isso é discutido em: Bug 3653 - Reduza a necessidade do aviso "arquivos desaparecidos"

    
por 12.02.2016 / 20:07
3

Ou simplesmente (com ):

#!/bin/bash

/usr/bin/rsync "$@" 2> >(grep -Ev '(file has |rsync warning: some files )vanished')
ret=$?
((ret==24)) && exit 0 || exit $ret
    
por 28.03.2016 / 23:50
1

Minha resposta pode ser um caso de uso especial, mas achei que valeu a pena notar que as pessoas não perdem dados se estiverem nesse caso.

Eu estava recebendo essa mensagem para vários arquivos enquanto realizava um backup de rotina das unidades via rsync.

Eu realizei uma verificação do sistema no disco e acontece que há problemas com a unidade (alocação / corrupção de arquivos, etc.) e recomendei um backup + restauração + reformatação.

Portanto, antes de sair, suprima ou ignore a mensagem imediatamente, é aconselhável executar uma verificação de integridade em sua unidade apenas para estar seguro.

    
por 03.03.2018 / 01:56

Tags