Skip to content

Instantly share code, notes, and snippets.

@tskrynnyk
Created June 26, 2011 09:20
Show Gist options
  • Select an option

  • Save tskrynnyk/1047435 to your computer and use it in GitHub Desktop.

Select an option

Save tskrynnyk/1047435 to your computer and use it in GitHub Desktop.
Backup logs.
#! /bin/sh
# log-backup:
#
# Usage:
# log-backup <service>
#
# /etc/logrotate.d/ulogd:
#
# /var/log/ulog/*.log {
# ...
# postrotate
# ...
# /usr/local/bin/log-backup ulog
# endscript
# }
#
LANG=C
SERVICE=${1:?Parameter <service> missing.}
BACKUP_DIR=/home/archives/log/$SERVICE
YESTERDAY_MONTH_DIR=`date -d yesterday +%Y/%m`
YESTERDAY_FILE=`date -d yesterday +%Y%m%d`
DST_DIR=${BACKUP_DIR}/${YESTERDAY_MONTH_DIR}
SRC_FILE=
SRC_FILENAME=
DST_FILE=
COMPRESS_METHOD=
SUFFIX=
# ------------------------------------------------------------------------------
# SUBROUTINES
check_backup_file() {
[ -n "$COMPRESS_METHOD" ] && SUFFIX=.${COMPRESS_METHOD}
[ ! -f "${DST_DIR}/${DST_FILE}${SUFFIX}" ] || exit 255
}
compress_backup_file() {
cd $DST_DIR
case "$COMPRESS_METHOD" in
gz)
gzip $DST_FILE
;;
bz2)
bzip2 -q -f -9 $DST_FILE
;;
zip)
zip -q -m -9 ${DST_FILE}.${COMPRESS_METHOD} $DST_FILE
;;
*)
;;
esac
}
cp_logfile() {
[ -d $DST_DIR ] || mkdir -p $DST_DIR && \
cp $SRC_FILE ${DST_DIR}/${DST_FILE}
}
backup_logfile() {
SRC_FILE=$1
SRC_FILENAME=$(basename ${SRC_FILE%%.*})
SRC_EXTENSION=$(basename ${SRC_FILE##*.})
[ "$SRC_EXTENSION" == 'gz' ] && EXT=.gz
DST_FILE=${SRC_FILENAME}-${YESTERDAY_FILE}.log${EXT}
COMPRESS_METHOD=$2
check_backup_file
cp_logfile
[ -n "$COMPRESS_METHOD" ] && \
compress_backup_file
#for i in ${SRC_FILES[*]}; do
#done
}
# ------------------------------------------------------------------------------
#
case "$SERVICE" in
syslog)
backup_logfile /var/log/syslog.1 bz2
;;
mail)
backup_logfile /var/log/mail.log.1 bz2
;;
ulog)
backup_logfile /var/log/ulog/syslogemu.log.1 bz2
;;
named)
backup_logfile /var/log/named/notify.log.0 bz2
backup_logfile /var/log/named/queries.log.0 bz2
backup_logfile /var/log/named/security.log.0 bz2
backup_logfile /var/log/named/xfer-in.log.0 bz2
backup_logfile /var/log/named/xfer-out.log.0 bz2
;;
sudo)
backup_logfile /var/log/sudo.log.1 bz2
;;
squid3)
backup_logfile /var/log/squid3/access.log.1 bz2
;;
dansguardian)
#SRC_FILE=/var/log/dansguardian/access.log.1
#SRC_FILENAME=$(basename $SRC_FILE .log.1)
#DST_FILE=${SRC_FILENAME}-${YESTERDAY_FILE}.log
#COMPRESS_METHOD=bz2
backup_logfile /var/log/dansguardian/access.log.1 bz2
;;
pure-ftpd)
backup_logfile /var/log/pure-ftpd/transfer.log.1 bz2
;;
*)
exit 1
;;
esac
# EOF
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment