#!/bin/bash # sync to your favourite Slackware mirror by FTP # example url: # ftp://ftp.slackware.com/pub/slackware/slackware-current/slackware/n/apache-1.0.99-i486-2.tgz if [ "$1" == "-h" -o $# -gt 1 ]; then cat< Get only -c -> Clean only -h -> this Help EOF exit 0 fi [ "$1" == "-g" ] && GETONLY=1 [ "$1" == "-c" ] && CLEANONLY=1 WGET=/usr/bin/wget OPT="-r -N -l inf -nr " HOST=sunsite.icm.edu.pl HOSTPATH="/pub/linux/slackware" #NDIRS=3 NDIRS=`echo "$HOSTPATH" | awk -F'/' '{ print NF-1; }'` function doarea { local AREA=$1 echo "[Handling area $AREA]" [ -n "${AREA}" ] || return [ "${CLEANONLY}" == "1" ] || ${WGET} -nH --cut-dirs=${NDIRS} ${OPT} \ ftp://${HOST}${HOSTPATH}${AREA} || return [ "${GETONLY}" == "1" ] && return for LST in `find .${AREA} -type f -name ".listing"`; do SUBAREA=`dirname ${LST}` ( cd ${SUBAREA} || return echo "[Cleaning in ${SUBAREA}]" for SUSPECT in * ; do grep -q ${SUSPECT} .listing || ( echo "[Removing ${SUSPECT}]" rm -rf ${SUSPECT} ) done ) done } for area in `egrep -v "^ *(#|$)" slackmir.areas`; do doarea $area done