Обновить скрипт bash, проверить файл, как? - PullRequest
1 голос
/ 24 июня 2011
#!/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 Ответ

1 голос
/ 24 июня 2011

Аргумент -nc для wget не будет повторно извлекать файлы, которые уже существуют.Однако он не совместим с переключателем -N .Поэтому вам придется изменить строку WGET на:

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