#!/bin/bash SCRIPT=${0##*/} BASE=/home/backup SSHOPTS="-q -c blowfish" RSYNCOPTS="--delete -avxlr" CONF=/etc/$SCRIPT f_sync() { [ -d $1 ] && \ for SRC in $(ls $1|grep -v "^\."); do local DST=$2/${SRC##*@} echo \# $SRC \# && \ local e=( $@ ) if [ $# -ge 3 ]; then local i=3;while [ $i -le $# ]; do eval $(echo eval "$"$i) ((i++));done fi done } f_sync $CONF/rsync $BASE \ "mkdir -p \$DST;cd \$DST;pkg_info=\$(ssh \$SSHOPTS \$SRC \"pkg_info -t 2>/dev/null|cut -f1 -d ' '\");[[ -n \$pkg_info ]] && echo \$pkg_info>pkg_info" \ "rsync -e \"ssh \$SSHOPTS\" \$RSYNCOPTS --files-from=\$CONF/rsync/\$SRC \$SRC:/ \$DST" f_sync $CONF/rsyncd $BASE \ "mkdir -p \$DST;cd \$DST;pkg_info=\$(ssh \$SSHOPTS \$SRC \"pkg_info -t 2>/dev/null|cut -f1 -d ' '\");[[ -n \$pkg_info ]] && echo \$pkg_info>pkg_info" \ "rsync \$RSYNCOPTS --files-from=\$CONF/rsyncd/\$SRC \$SRC::root \$DST" f_sync $CONF/ssh $BASE \ "rm -rf \$DST;mkdir -p \$DST;cd \$DST;pkg_info=\$(ssh \$SSHOPTS \$SRC \"pkg_info -t 2>/dev/null|cut -f1 -d ' '\");[[ -n \$pkg_info ]] && echo \$pkg_info>pkg_info" \ "ssh \$SSHOPTS \$SRC \"tar cpf - 2>/dev/null \$(echo \$(< \$CONF/ssh/\$SRC))\"|tar xvpf -"