| 123456789101112131415161718192021222324252627282930313233343536373839 | 
							- #!/bin/bash
 
- ## Simple logrotate script
 
- ## http://superglue.it | Danja Vasiliev, 2014
 
- ##
 
- ## Takes filepath or file mask as argument:
 
- ##   logrotate /www/access.log [/www/error*.log]
 
- ## and gzip compresses them inplace
 
- ## default settings
 
- ## override in config file mentioned below 
 
- _ROTATE=30  ## backlogs to keep, days
 
- _DATE=$(date +%d.%m.%y-%H:%M:%S)
 
- _LOGS=( $* )
 
- ## read config file 
 
- _CONF='/etc/logrotate.conf'
 
- [[ -e $_CONF ]] && . $_CONF
 
- function err {
 
-   local _ERR=$?
 
-   printf %s": "%s"\n" "$(basename $0)" "$1"
 
-   exit $_ERR
 
- }
 
- [[ -n $_LOGS ]] || err 'missing input file'
 
- [[ -e $_LOGS ]] || err 'input file not readable'
 
- for _FILE in ${_LOGS[@]}; do
 
-   ## get number of backlogs and purge unwanted
 
-   _NUM=( $(ls -1 -r $_FILE*.gz &>/dev/null || echo '') ) 
 
-   [[ ${#_NUM[@]} -gt $((_ROTATE-1)) ]] && rm -f ${_NUM[@]:$((_ROTATE-1)) }
 
-   ## compress and move
 
-   gzip -f $_FILE || err 'failed to gzip file'
 
-   mv $_FILE.gz "$_FILE"-"$_DATE".gz || err 'failed to rename archive'
 
- done
 
- exit $?
 
 
  |