#!/bin/bash # cd ~ftpadmin/Mirror # SRC="rsync://ftp.gwdg.de/pub/suse/i386/update/" DST="/LOCAL/suse/i386/update" NAM="suse_update" # MAILTO="XXX@YYY.ZZ" RSYNC_MAILTO="XXX@YYY.ZZ" SUBJ="XXX rsync: ${NAM}" # # # first - test (no harm): #DRY="--dry-run" # # # second - migrate from ftp to rsync without fetching existing files again # (needs rsync version 2.4.6 protocol version 24 or newer) #DRY="--size-only --existing" # # # third - really do it #DRY="" # # --archive is -rlptgoD, use -rltD instead # --checksum would make too much load for the server # OPTS="-rltDvvHb --safe-links --stats --partial --backup-dir=.old-saved" # #STRANGE="--delete --force" STRANGE="--delete" #STRANGE="--max-delete=1" # #SUFFIX="--suffix _until_`date +%y%m%d`" # EXCL_X=".XXX-mirror" EXCL_X="${EXCL_X} lost+found" # #EXCL_X="${EXCL_X} /any_unwanted_full_path" #EXCL_X="${EXCL_X} /9.0" # #EXCL_X="${EXCL_X} any_unwanted_partial_path" #EXCL_X="${EXCL_X} x86_64" # EXCL="--exclude /.old-saved" for i in ${EXCL_X} do EXCL="${EXCL} --exclude $i" done # DAT1="`date +%y%m%d.%H%M`" PROT="/var/log/rsync.${NAM}.${DAT1}" # ALLOPTS="${OPTS} ${EXCL} ${SUFFIX} ${DRY} ${STRANGE}" #echo ${ALLOPTS} # echo "==== start ========================== ${DAT1}" >>${PROT} echo rsync ${ALLOPTS} ${SRC} ${DST} >>${PROT} 2>&1 rsync ${ALLOPTS} ${SRC} ${DST} >>${PROT} 2>&1 RC=$? DAT2="`date +%y%m%d.%H%M`" if test "${RC}" = "0" -o "${RC}" = "23" -o "${RC}" = "24"; then grep "^Total file size: " ${PROT} | \ ( read a b c d e echo "${DAT2} ${NAM} size: $d bytes." >>${DST}/.XXX-mirror ) else touch ${DST}/.XXX-mirror fi echo "==== end ======== RC=${RC} ============ ${DAT1} ${DAT2}" >>${PROT} # MAILIT=yes if [ "${RC}" = "0" ]; then NUMFIL=`grep "^Number of files transferred:" ${PROT} | \ (while read n o f t X; do echo -n ${X}; done)` if [ "${NUMFIL}" = "0" ]; then MAILIT=no fi fi if [ "${MAILIT}" = "yes" ]; then V1="is uptodate" V2="is a hard link" V3="^keep_backup " V4="^deleting " V5="^skipping non-regular file " grep -v "${V1}\|${V2}\|${V3}\|${V4}\|${V5}" ${PROT} | \ mail -s"${SUBJ} (RC=${RC})" ${MAILTO} #else # mail -s"${SUBJ} (RC=${RC}) __nomail__" ${MAILTO} <${PROT} fi # #if [ ! "${RC}" = "0" ]; then # if [ ! "${RC}" = "23" ]; then # if [ ! "${RC}" = "24" ]; then # sleep 2000 # exec ./rsync.suse_update # fi # fi #fi