Skript, mis otsib üles failid mille poole ei ole ammu pöördutud ja arhiveerib(bash)

From ICO wiki
Jump to navigationJump to search
#!/bin/bash
# Lauri Liibert AK21 2010
# Skript mis leiab kõik vanad failid ja arhiveerib need

#Kuvame kasutusjuhendi kui vaja
usage()
{
/bin/cat << EOF
Usage: aof.sh options

This script archives old files!

OPTIONS:
   -h      show this message
   -p      path (default: pwd)
   -a      archive name (default: archive_date.tar.gz)
   -r      time (default: 356)

EOF
}

#Kontrollime kas programmiga tuli kaasa argumente
if [ $# -eq 0 ] ; then
    usage
    exit 1
fi

#Määrame vaike väärtused muutujatele
PATH=/bin/pwd
ARCHIVE=archive_$(/bin/date +%Y%m%d).tar.gz
TIME="356"

#Kontrollime argumente ja vajadusel väärtustame
while getopts "hrvp:a:t:e:" OPTION
do
    case $OPTION in
        h)
          usage
          exit 1
          ;;
        p)
          PATH=$OPTARG
          ;;
        t)
          TIME=$OPTARG
          ;;
        a)
          ARCHIVE=$OPTARG
          ;;
        r)
          REMOVE="--remove-files"
          ;;
        ?)
          usage
          exit 1
          ;;
    esac
done

# Kuvame kasutajale informatsiooni
echo "Path: "$PATH
echo "Archive name: "$ARCHIVE
echo "Last acces time: " $TIME "days"

# Skripti põhi funktsioon
/usr/bin/find $PATH -type f -mtime +$TIME -print0 | /usr/bin/xargs -0 /bin/tar rvf $ARCHIVE $REMOVE

#Kontrollime kas oli üldse faile
if [ $(/bin/tar tvf $ARCHIVE | /usr/bin/wc -l) -gt 0 ] ; then
    echo "Found: " $(/bin/tar tvf $ARCHIVE | /usr/bin/wc -l)" files"
    echo "Archive name is "$ARCHIVE
else
    echo "No files found!"
    /bin/rm -f $ARCHIVE
fi