logrotate 617 B

123456789101112131415161718192021222324252627
  1. #!/bin/bash
  2. ## Simple logrotate script
  3. ## http://superglue.it | Danja Vasiliev, 2014
  4. ##
  5. ## Takes filepath as argument
  6. ## backlogs to keep
  7. _ROTATE=7
  8. _DATE=$(date +%d.%m.%y-%H:%M:%S)
  9. _FILE=$1
  10. function err {
  11. printf %s": "%s"\n" "$(basename $0)" "$1"; exit 1
  12. }
  13. [[ -z $1 ]] && err 'missing input file'
  14. [[ ! -e $1 ]] && err 'input file not readable'
  15. ## get number of backlogs and purge unwanted
  16. _N=( $(ls -1 -r $_FILE*.gz) )
  17. [[ ${#_N[@]} -gt $((_ROTATE-1)) ]] && rm -f ${_N[@]:$((_ROTATE-1)) }
  18. gzip -f $_FILE || err 'failed to gzip file'
  19. mv $_FILE.gz "$_FILE"_"$_DATE".gz || err 'failed to rename archive'
  20. exit 0