fbpx
skip to Main Content

Può capitare di dover copiare una cartella con rsync su un server remoto, per farne il backup o altro. Si può usare questo script:

#!/bin/bash
#utente remoto
REMOTE_USER="root"
#host su cui si trova la cartella remota
REMOTE_HOST="IP_O_HOSTNAME"
#porta ssh remota
REMOTE_PORT="22"

#ATTENZIONE!! /cartella/di/destinazione NO /cartella/di/destinazione/
#directory locale da sincronizzare
LOCAL_DIR=”/directory/sorgente”
#directory remota da sincronizzare
REMOTE_DIR=”/directory/destinazione”
#email per report
EMAIL=”prova@email.it”
/usr/bin/rsync -e “ssh -p ${REMOTE_PORT}” -auP –delete –exclude=”Recycle Bin” ${LOCAL_DIR}/ ${REMOTE_USER}@$REMOTE_HOST:${REMOTE_DIR} &> /tmp/rsync_result
cat /tmp/rsync_result | mail -s “rsync result” $EMAIL
Parametri passati ad rsync:
-e "ssh -p ${REMOTE_PORT}" è necessario per specificare una porta diversa dalla 22
-a equivale a -rlptgoD cioè ricorsivo, copia i symlink come symlink, preserva i permessi, preserva la data di modifica, preserva il gruppo, preserva il proprietario, copia device e file speciali. Per alcune è necessario che l’utente sia root, consultare il man se si vuole fare il sync con un utente diverso.
-u  salta i file che sono più nuovi nella destinazione
-P se il trasferimento viene interrotto, mantiene il file parziale e mostra il progresso del trasferimento
--delete ATTENZIONE!! elimina dal ricevente i file che non sono presenti da chi spedisce.
--exclude="Recycle Bin" esclude la directory
-n è possibile aggiungere l’opzione -n, cioè dry run, per fare delle prove. Con questa opzione lo script non fa nulla ma produce un output praticamente uguale a quello di una vera esecuzione
Se si usa lo script, sarà necessaria l’autenticazione senza password di ssh.
Rsync a due direzioni
Non è una buona idea fare un rsync bidirezionale, in quanto (oltre che concettualmente poco corretto) ci sarebbero problemi in caso di file cancellati o rinominati

Back To Top
English French German Italian Spanish