Como posso fazer o rsync ignorar arquivos ausentes?

8

Estou executando um comando como o seguinte para vários sistemas diferentes:

$ rsync -a -v [email protected]:'/path/to/first/*.log path/to/second.txt' /dest/folder/0007/.

Às vezes, * .log não existe e tudo bem, mas o rsync gera o seguinte erro:

receiving file list ... rsync: link_stat "/path/to/first/*.log" failed: No such file or directory (2)
done

Existe alguma maneira de suprimir isso? A única maneira que posso pensar é usar filtros include e exclude, que parecem apenas um PITA para mim. Obrigado!

    
por Joe Casadonte 28.06.2011 / 17:03

2 respostas

7

Acho que a resposta para a pergunta é melhor descrita nesta resposta:

link

--ignore-missing-args

Infelizmente, apenas versões posteriores têm essa funcionalidade. Estou executando o RHEL 7 com o rsync 3.0.9, que parece não ter essa opção.

    
por 29.05.2015 / 15:53
2

Para esclarecer, você gostaria apenas de não "ver" o erro? Para esse caso, você pode apenas redirecionar a Saída de Erro Padrão, mas pode acabar perdendo um erro mais sério que você pode querer saber.

Exemplo de saída de erro de redirecionamento

rsync -a -v [email protected]:'/path/to/first/*.log path/to/second.txt' /dest/folder/0007/ 2>/dev/null

Se, em vez disso, você estiver procurando apenas perder o erro em um arquivo que não existe, não é possível alterar o filtro rsync * .log e desejar evitar o uso de includes, você poderá envolvê-lo em um script para continuar com base na condição.

Exemplo de script

#!/bin/sh
# Script to Handle Rsync based on Log File Existence
if [ "$(ls -A /path/to/first/*.log > /dev/null > 2&1)" ]; then
     # Log Exists Use This Rsync
    rsync -a -v [email protected]:'/path/to/first/*.log path/to/second.txt' /dest/folder/0007/
else
    # Log Does Not Exist Use This Rsync
    rsync -a -v [email protected]:'path/to/second.txt' /dest/folder/0007/
fi

Espero que eu tenha ajudado.

    
por 28.06.2011 / 17:35

Tags