Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Remove old logs from Quassel SQLite database
#!/bin/sh
BAK_PATH="${HOME}/.config/quassel-irc.org/quassel-storage.sqlite.bak"
CURRENT_PATH="${HOME}/.config/quassel-irc.org/quassel-storage.sqlite"
# first day of data that will be maintained
# -15 day means that *every* chatline stored before 16 days ago and so on are going to be eliminated.
# only the last 15 days are keeped.
DATE_TO_PRUNE='-15 day'
die() {
echo $@
exit 1
}
# is quassel running?
is_quassel_running() {
pgrep quassel > /dev/null
echo $?
}
if [ $(is_quassel_running) -eq 0 ]; then
echo "ERROR: quassel is running, stop it first!"
exit 1;
fi
echo -n "Creating a backup and a temporary copy of the db .."
mv "$CURRENT_PATH" "$BAK_PATH" || die "unable to create a copy backup"
cp "$BAK_PATH" "$BAK_PATH.tmp" || die "unable to create a temporary copy of the db"
echo ".. done!"
echo -n "Cleaning up the database .."
# purge the db from old entry
sqlite3 $BAK_PATH.tmp "DELETE FROM backlog WHERE time < strftime('%s','now','${DATE_TO_PRUNE}');" || die "Purge failed"
echo ".. done!"
echo -n "Rebuilding database .."
# rebuild the db to save disk space (the db doesn't shrink automatically)
sqlite3 $BAK_PATH.tmp .dump | sqlite3 $CURRENT_PATH || die "Rebuild failed"
echo ".. done!"
echo -n "Deleting temporary files .."
# delete rubbish
rm "$BAK_PATH.tmp" || die "rm failed"
echo ".. done!"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.