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 {} \;