Come posso ottenere rsync per ignorare i file mancanti?


9

Sto eseguendo un comando come il seguente su diversi sistemi:

$ rsync -a -v foo@machine.company.com:'/path/to/first/*.log path/to/second.txt' /dest/folder/0007/.

A volte * .log non esiste e va bene, ma rsync genera il seguente errore:

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

C'è un modo per sopprimerlo? L'unico modo in cui riesco a pensare è usare i filtri di inclusione ed esclusione, che per me sembrano solo una PITA. Grazie!

Risposte:



2

Per chiarire, ti piacerebbe semplicemente non "vedere" l'errore? In tal caso, potresti semplicemente reindirizzare l'output di errore standard, ma potresti finire per perdere un errore più grave che potresti voler conoscere.

Esempio di output dell'errore di reindirizzamento

rsync -a -v foo@machine.company.com:'/path/to/first/*.log path/to/second.txt' /dest/folder/0007/ 2>/dev/null

Se invece stai cercando di perdere solo l'errore su un file che non esiste, non puoi cambiare il filtro rsync * .log e vuoi evitare di usare include, puoi avvolgerlo in uno script per procedere in base al condizione.

Esempio di 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

Spero di essere stato di aiuto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.