Jump to content
ale.ab

script rsync incrementale con data ed eliminazione cartelle remote

Recommended Posts

Buongiorno,

non so se è la seazione giusta. ma nella sezione io programmo vedo solo script in php, questo è uno script shell linux quindi ho pensato di metterlo  qui, se i moderatori decidono possono spostare la discussione senza problemi.

 

Scrivo perchè non funziona una riga dello script che ho scritto e vi posto un pezzo

...........
for i in *; do
ssh -i $key $destinazione mkdir -p $cartella/incomplete_back-$DATE/$i/
cas3=$RANDOM
rsync -avzHP --log-file="/tmp/rsync-$cas3.txt" \
  -e "ssh -i $key" \
  --delete \
  --link-dest=../../current/$i \
  /home/$i/ $destinazione:$cartella/incomplete_back-$DATE/$i/
if [ $? -eq 0 ] ; then
  echo "rsync ok" 
else
  echo "Errore Rsync on servername" | mutt -a "/tmp/rsync-$cas3.txt" -s "Errore Rsync on servername" -- email@email.it
fi
done
ssh -i $key $destinazione \
  "mv $cartella/incomplete_back-$DATE $cartella/back-$DATE \
  && rm -f $cartella/current \
  && ln -s back-$DATE $cartella/current"
ssh -i $key $destinazione 'cd $cartella/ && ls | head -n -200 | xargs rm -rf'
.....................


praticamente lo script fa un rsync delle cartelle home degli utenti su un server remoto tramite le chiavi pubbliche/private e fin qui funziona tutto regolarmente...

L'unica cosa che non mi funziona è l'ultima riga postata e cioè la riga con cui elimina le prime 200 cartelle della cartella remota.

infatti con questo script creando una cartella per ogni volta che viene lanciato andrebbe a crescere a dismisura (anche se usando i hardlink si riduce di molto lo spazio). quindi vorrei elimianare ogni tanto delle cartelle, in questo caso ho deciso di tenere le ultime 200 cartelle...

ma lo script funziona regolarmente ma non elimina le cartelle, quindi mi ritrovo anche con 300 cartelle remote.

la cosa strana è che se lancio lo il comando

ssh -i /path/key user@remote.server.it 'cd /backup/ && ls | head -n -200 | xargs rm -rf'

funziona e mi elimina le cartelle...

 

devo cambiare qualcosa nello script?

grazie mille in anticipo :)

Share this post


Link to post
Share on other sites

prova a lanciare lo script con un set -eux prima della riga incriminata, cosi' vedi meglio cio' che succede..

 

Ottimo,

grazie mille.

Non ho usato quel comando perchè il comando è abbastanza lungo visto che copia un pò di cartelle...

però mi hai dato l'idea di creare uno script ex novo con solo le variabili e il comando incriminato...

e il risultato era che non "capiva" il comando , ho provato con gli apici ma non prendeva la variabile $cartella

alla fine sono riuscito con i doppi apici

quindi è diventato

ssh -i /path/key user@remote.server.it "cd /backup/ && ls | head -n -200 | xargs rm -rf"

 

così sembra funzionare  :)

grazie ancora

 

apporofitto per chiedere un'altra cosa legata allo script

come si vede ho messo un alert via email quando rsync da errore...

però a volte succede che mi arrivano delle email di errore con questo valore nel log

 

2016/02/18 00:17:04 [5905] rsync warning: some files vanished before they could be transferred (code 24) at main.c(1039) [sender=3.0.6]

 

che in verità non è un errore perchè potrebbe essere che nel frattempo che lo script sta facendo il backup l'utente ha eliminato il file quindi per me ci può stare...

quindi che valore (exit code) deve tornare per inviare un alert su errore ma non per ...some files vanished...

stando a questo link

http://wpkg.org/Rsync_exit_codes

dovrei dirgli

quando lo script torna un valore diverso da 0 & non 24

giusto?

 

grazie mille

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×