mirror of https://github.com/tLDP/LDP
67 lines
1.5 KiB
Bash
67 lines
1.5 KiB
Bash
![]() |
#!/bin/bash
|
||
|
# archiveweblogs.sh v1.0
|
||
|
|
||
|
# Troy Engel <tengel@fluid.com>
|
||
|
# Slightly modified by document author.
|
||
|
# Used with permission.
|
||
|
#
|
||
|
# This script will preserve the normally rotated and
|
||
|
#+ thrown away weblogs from a default RedHat/Apache installation.
|
||
|
# It will save the files with a date/time stamp in the filename,
|
||
|
#+ bzipped, to a given directory.
|
||
|
#
|
||
|
# Run this from crontab nightly at an off hour,
|
||
|
#+ as bzip2 can suck up some serious CPU on huge logs:
|
||
|
# 0 2 * * * /opt/sbin/archiveweblogs.sh
|
||
|
|
||
|
|
||
|
PROBLEM=66
|
||
|
|
||
|
# Set this to your backup dir.
|
||
|
BKP_DIR=/opt/backups/weblogs
|
||
|
|
||
|
# Default Apache/RedHat stuff
|
||
|
LOG_DAYS="4 3 2 1"
|
||
|
LOG_DIR=/var/log/httpd
|
||
|
LOG_FILES="access_log error_log"
|
||
|
|
||
|
# Default RedHat program locations
|
||
|
LS=/bin/ls
|
||
|
MV=/bin/mv
|
||
|
ID=/usr/bin/id
|
||
|
CUT=/bin/cut
|
||
|
COL=/usr/bin/column
|
||
|
BZ2=/usr/bin/bzip2
|
||
|
|
||
|
# Are we root?
|
||
|
USER=`$ID -u`
|
||
|
if [ "X$USER" != "X0" ]; then
|
||
|
echo "PANIC: Only root can run this script!"
|
||
|
exit $PROBLEM
|
||
|
fi
|
||
|
|
||
|
# Backup dir exists/writable?
|
||
|
if [ ! -x $BKP_DIR ]; then
|
||
|
echo "PANIC: $BKP_DIR doesn't exist or isn't writable!"
|
||
|
exit $PROBLEM
|
||
|
fi
|
||
|
|
||
|
# Move, rename and bzip2 the logs
|
||
|
for logday in $LOG_DAYS; do
|
||
|
for logfile in $LOG_FILES; do
|
||
|
MYFILE="$LOG_DIR/$logfile.$logday"
|
||
|
if [ -w $MYFILE ]; then
|
||
|
DTS=`$LS -lgo --time-style=+%Y%m%d $MYFILE | $COL -t | $CUT -d ' ' -f7`
|
||
|
$MV $MYFILE $BKP_DIR/$logfile.$DTS
|
||
|
$BZ2 $BKP_DIR/$logfile.$DTS
|
||
|
else
|
||
|
# Only spew an error if the file exits (ergo non-writable).
|
||
|
if [ -f $MYFILE ]; then
|
||
|
echo "ERROR: $MYFILE not writable. Skipping."
|
||
|
fi
|
||
|
fi
|
||
|
done
|
||
|
done
|
||
|
|
||
|
exit 0
|