Como faço para que o rsync ignore os arquivos ausentes?


9

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

$ rsync -a -v foo@machine.company.com:'/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 de pensar é usar filtros de inclusão e exclusão, que me parecem uma PITA. Obrigado!

Respostas:



2

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

Exemplo de saída de erro de redirecionamento

rsync -a -v foo@machine.company.com:'/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 poderá alterar o filtro rsync * .log e deseja evitar o uso de inclusões, você pode envolvê-lo em um script para prosseguir com base no doença.

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 foo@machine.company.com:'/path/to/first/*.log path/to/second.txt' /dest/folder/0007/
else
    # Log Does Not Exist Use This Rsync
    rsync -a -v foo@machine.company.com:'path/to/second.txt' /dest/folder/0007/
fi

Espero ter ajudado.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.