On Thu, Aug 02, 2012 at 11:21:01PM +0200, Martijn Rijkeboer wrote:
> Hi,

here's an example of how not to script rsync, when just starting
to learn how to script

it got over complicated over time.  i should rewrite it sometime :)

#!/bin/bash

SCRIPT=${0##*/}
BASE=/archive0/_backup
SSHOPTS="-q -o Ciphers=arcfour256 -o [email protected]"
RSYNCOPTS="--delete -avxlr"
CONF=/etc/$SCRIPT

f_f() {
  [ -d $1 ] && \
  for SRC in $(ls $1|grep -v "^\."); do
    echo \# $SRC \#
    if [ $# -ge 3 ]; then
      eval $(echo eval "$"3)
      DST=$2/$REV/${HOST%%.*}
      local i=4;while [ $i -le $# ]; do
        eval $(echo eval "$"$i)
      ((i++));done
    fi
  done
}

f_f $CONF/rsyncd $BASE "local HOST=\${SRC##*@} && local PKG=\$(ssh \$SSHOPTS 
\$SRC \"uname -nr;pkg_info -t 2>/dev/null|cut -f1 -d ' '\") && local 
REV=\$(echo \$PKG|cut -f2 -d ' ')" "mkdir -p \$DST;cd \$DST;[[ -n \$PKG ]] && 
echo \$PKG>pkg_info" "rsync \$RSYNCOPTS --files-from=\$CONF/rsyncd/\$SRC 
\$HOST::rsk \$DST"
f_f $CONF/rsh $BASE "local HOST=\${SRC##*@} && local PKG=\$(rsh -l \$SCRIPT 
\$HOST \"uname -nr;pkg_info -t 2>/dev/null|cut -f1 -d ' '\") && local 
REV=\$(echo \$PKG|cut -f2 -d ' ')" "mkdir -p \$DST;cd \$DST;[[ -n \$PKG ]] && 
echo \$PKG>pkg_info" "rsync \$RSYNCOPTS --files-from=\$CONF/rsh/\$SRC 
\$HOST::rsk \$DST"
f_f $CONF/rsync $BASE "local HOST=\${SRC##*@} && local PKG=\$(ssh \$SSHOPTS 
\$SRC \"uname -nr;pkg_info -t 2>/dev/null|cut -f1 -d ' '\") && local 
REV=\$(echo \$PKG|cut -f2 -d ' ')" "mkdir -p \$DST;cd \$DST;[[ -n \$PKG ]] && 
echo \$PKG>pkg_info" "rsync -e \"ssh \$SSHOPTS\" \$RSYNCOPTS 
--files-from=\$CONF/rsync/\$SRC \$SRC:/ \$DST"
f_f $CONF/ssh $BASE "local HOST=\${SRC##*@} && local PKG=\$(ssh \$SSHOPTS \$SRC 
\"uname -nr;pkg_info -t 2>/dev/null|cut -f1 -d ' '\") && local REV=\$(echo 
\$PKG|cut -f2 -d ' ')" "mkdir -p \$DST;cd \$DST;[[ -n \$PKG ]] && echo 
\$PKG>pkg_info" "ssh \$SSHOPTS \$SRC \"tar cpf - 2>/dev/null \$(echo \$(< 
\$CONF/ssh/\$SRC))\"|tar xpf - && rm -rf \$DST && mv \$DST.tmp \$DST"

Reply via email to