更新bash脚本,文件检查,怎么样?

时间:2011-06-24 02:01:50

标签: linux bash wget

#!/bin/sh

LOCAL=/var/local

TMP=/var/tmp

URL=http://um10.eset.com/eset_upd

USER=""
PASSWD=""

WGET="wget --user=$USER --password=$PASSWD -t 15 -T 15 -N -nH -nd -q"

UPDATEFILE="update.ver"

cd $LOCAL

CMD="$WGET $URL/$UPDATEFILE"
eval "$CMD" || exit 1;
if [ -n "`file $UPDATEFILE|grep -i rar`" ]; then
(
  cd $TMP
    rm -f $TMP/$UPDATEFILE
      unrar x $LOCAL/$UPDATEFILE ./
      )
      UPDATEFILE=$TMP/$UPDATEFILE
      URL=`echo $URL|sed -e s:/eset_upd::`
      fi
      TMPFILE=$TMP/nod32tmpfile
      grep file=/ $UPDATEFILE|tr -d \\r > $TMPFILE
      FILELIST=`cut -c 6- $TMPFILE`
      rm -f $TMPFILE
      echo "Downloading updates..."
      for FILE in $FILELIST; do
        CMD="$WGET \"$URL$FILE\""
          eval "$CMD"
          done
          cp $UPDATEFILE $LOCAL/update.ver
          perl -i -pe 's/\/download\/\S+\/(\S+\.nup)/\1/g' $LOCAL/update.ver
          echo "Done."

所以我有这个代码来下载我的防病毒软件的定义。唯一的问题是,它每次运行脚本时都会下载所有文件。有可能实现一些排序文件检查吗?比方说,

“如果该文件存在且具有相同的文件大小,则跳过它”

Bash Linux

1 个答案:

答案 0 :(得分:1)

wget的 -nc 参数不会重新获取已存在的文件。但是,它与 -N 开关不兼容。因此,您必须将WGET行更改为:

WGET="wget --user=$USER --password=$PASSWD -t 15 -T 15 -nH -nd -q -nc"