You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

72 lines
3.3 KiB

#!/bin/bash
# (c) Copyright by authors of the Tiki Wiki CMS Groupware Project
#
# All Rights Reserved. See copyright.txt for details and a complete list of authors.
# Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details.
#
# Looks up actionlog content and allow trimming because it could grow forever
# TODO: non-interactive silent mode for crontab
# TODO: allow more flexible choices, such as "keep last NNN entries" etc.
usage()
{
echo "Usage: $0 [path/to/local.php]"
}
if [[ "$1" = "" ]]
then
# If no parameter was given, try to guess
if [[ -f db/local.php ]]
then
LOCALFILE="db/local.php"
echo "Detected: $LOCALFILE"
else
usage
exit 1
fi
else
# Use the one provided
LOCALFILE="$1"
fi
echo "Using: $LOCALFILE"
if [[ -f "$LOCALFILE" ]]
then
DB_DETECTED=$(grep "^\$dbs_tiki" "$LOCALFILE" | cut -d"'" -f2| tail -n 1);
USER_DETECTED=$(grep "^\$user_tiki" "$LOCALFILE" | cut -d"'" -f2| tail -n 1);
PASS_DETECTED=$(grep "^\$pass_tiki" "$LOCALFILE" | cut -d"'" -f2| tail -n 1);
else
echo "ERROR: local.php file not found"
usage
exit 1
fi
#mysql -u "${USER_DETECTED}" --password="${PASS_DETECTED}" "${DB_DETECTED}" -e "SHOW TABLES;"
COUNT=$(mysql --skip-column-names --silent -u "${USER_DETECTED}" --password="${PASS_DETECTED}" "${DB_DETECTED}" -e "SELECT COUNT(*) FROM tiki_actionlog ; ")
#mysql -u "${USER_DETECTED}" --password="${PASS_DETECTED}" "${DB_DETECTED}" -e "SELECT * FROM tiki_actionlog ORDER by lastModif DESC LIMIT 4; "
COUNT_OLDER_THAN_1_YEAR=$(mysql --skip-column-names --silent -u "${USER_DETECTED}" --password="${PASS_DETECTED}" "${DB_DETECTED}" -e "SELECT COUNT(*) FROM tiki_actionlog WHERE FROM_UNIXTIME(lastModif) < DATE_SUB(NOW(),INTERVAL 1 YEAR) ; ")
COUNT_OLDER_THAN_2_YEARS=$(mysql --skip-column-names --silent -u "${USER_DETECTED}" --password="${PASS_DETECTED}" "${DB_DETECTED}" -e "SELECT COUNT(*) FROM tiki_actionlog WHERE FROM_UNIXTIME(lastModif) < DATE_SUB(NOW(),INTERVAL 2 YEAR) ; ")
TIME_OLDEST=$(mysql --skip-column-names --silent -u "${USER_DETECTED}" --password="${PASS_DETECTED}" "${DB_DETECTED}" -e "SELECT lastModif FROM tiki_actionlog ORDER BY lastModif ASC LIMIT 1; ")
TIME_OLDEST_FRIENDLY=$(date "+%F %H:%M %Z" --date="@${TIME_OLDEST}")
TIME_LATEST=$(mysql --skip-column-names --silent -u "${USER_DETECTED}" --password="${PASS_DETECTED}" "${DB_DETECTED}" -e "SELECT lastModif FROM tiki_actionlog ORDER BY lastModif DESC LIMIT 1; ")
TIME_LATEST_FRIENDLY=$(date "+%F %H:%M %Z" --date="@${TIME_LATEST}")
echo "Number of entries in table tiki_actionlog: ${COUNT}"
echo "Number of entries older than 1 year: ${COUNT_OLDER_THAN_1_YEAR}"
echo "Number of entries older than 2 years: ${COUNT_OLDER_THAN_2_YEARS}"
echo "Oldest entry is dated: ${TIME_OLDEST_FRIENDLY}"
echo "Latest entry is dated: ${TIME_LATEST_FRIENDLY}"
echo "Delete entries older than 1 year? (y/N)"
read delete
if [ "$delete" = "y" ]
then
mysql -u "${USER_DETECTED}" --password="${PASS_DETECTED}" "${DB_DETECTED}" -e "DELETE FROM tiki_actionlog WHERE FROM_UNIXTIME(lastModif) < DATE_SUB(NOW(),INTERVAL 1 YEAR) ; "
else
echo "Delete entries older than 2 years? (y/N)"
read delete
if [ "$delete" = "y" ]
then
mysql -u "${USER_DETECTED}" --password="${PASS_DETECTED}" "${DB_DETECTED}" -e "DELETE FROM tiki_actionlog WHERE FROM_UNIXTIME(lastModif) < DATE_SUB(NOW(),INTERVAL 2 YEAR) ; "
fi
fi