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"