rsync in presenza di file “scomparsi” (in inglese vanished) ritorna un exit code 24
$ man rsync
24 Partial transfer due to vanished source files
Ci sono gà abbastanza flame sulla questione (ma anche simpatici wrapper che ritornano 0 anche in caso di questo tipo di errore) e non ci entro.
Se viene utilizzato expect (e/o altri linguaggi ) il problema è che l’esecuzione dell’istruzione successiva non viene effettuata ma termina.
Se il problema si manifesta durante l’ultima istruzione non sussiste, ma se lo scirpt dovesse eseguire più rsync di directory potenzialmente contenenti file “temporanei” (mail web proxy server in primis) il backup non sarebbe riutilizzabile.
Ecco un semplice modo per ovviare al problema, consapevoli che non tutti i file sono stati correttamente trasferiti. La prima parte presenta il backup di /etc che non dovrebbe subire questo fenomeno, e il backup di /var/www , direcotry potenzialmente ad alto contenuto “volatile”
#!/usr/bin/expect
log_user 1
exec rsync -e ssh -v -P -R -u -a --blocking-io --numeric-ids --delete --ignore-errors [email protected]:/etc /var/backups/www.texilee.it
puts "www.texilee.it:/etc OK"
puts ""
set err_code [catch {exec rsync -e ssh -v -P -R -u -a --blocking-io --numeric-ids --delete --ignore-errors [email protected]:/var/www /var/backups/www.texilee.it}]
if {1==$err_code} {
puts "www.texilee.it:/var/www OK error code 24"
} else {
puts "www.texilee.it:/var/www OK"
}