meta data for this page
  •  

Rsync szkript, mappák szinkronizálásához, mely rule fájlokból veszi a "mit-hovákat"

A szkript az „rsync_*.rule” fájlokat dolgozza fel. 2 vagy 3 TAB-bal elválasztott oszlopból kell álljanak a rule fájlok. Az első oszlop a „forrás”, a második a „cél”, a harmadik opcionális, kötőjellel megadott rsync opciókat lehet megadni, amik csak az adott sorra vonatkoznak. A szkriptet parancssorból is lehet paraméterezni az alább kommentben leírt módon:

rsync.sh
#!/bin/bash
############################################################################################################
# Rsync szkript v1.1 - Agoston Peter
# Utolso modositas: 2013.11.25.
# Hasznalat:
# ./rsync.sh [-n] [rsync_akarmi1.rule] [rsync_barmi2.rule] [-q]
# (Ha nem adunk meg semmilyen parametert, a futtatasi utvonalon levo osszes rsync_*.rule fajlt feldolgozza.
# A parameterek sorrendje tetszoleges lehet, az opciokat kotojellel kell megadni - a rule fájlokban is, ha van!)
# Hasznalhato extra parameter:
#   -n : simulalt mod (DRY_RUN)
#   -q : elrejti a nem kritikus hiba uzeneteket
#   -i : minden szinkronizalt fajnal mutat egy valtozasi statisztikat
#############################################################################################################
 
unset RULES
unset REOPT
for SOR in $*; do
        if [[ $SOR =~ "rsync_.*\.rule" ]]; then
                [[ -f $SOR ]] && RULES="$RULES $SOR" || echo "- Nincs a futtatasi utvonalon ilyen rule fajl: $SOR" | tee -a $LOG_FILE
        else
                [[ $SOR =~ "-[a-z]" ]] && REOPT="$REOPT $SOR";
        fi
done
echo "- Felvett extra rsync parameterek:$REOPT"
[[ -z $RULES ]] && RULES="rsync_*.rule"
echo "- Feldolgozasra kerulo rule fajlok: $RULES"
echo | tee -a $LOG_FILE
 
ROPT="--progress -u"
LOG_FILE="log/"`date +%Y%m%d`"_rsync.log"
cat rsync_*.rule | while read -r SOR; do
    if [ -n "$SOR" ]; then
        echo "________"`date`"________ [$SOR]" | tee -a $LOG_FILE
        SRC=`echo "$SOR" | awk '{print $1}'`
        DST=`echo "$SOR" | awk '{print $2}'`
        OPT=`echo "$SOR" | awk '{print $3}'`
        rsync -lptgoDhv ${OPT} ${ROPT} ${SRC} ${DST} | tee -a $LOG_FILE
        echo | tee -a $LOG_FILE
    fi
done
find log/*_rsync.log -type f -mtime +30 -exec rm {} \;