#!/bin/bash # debuginfofs-cleanup - simple script to purge unneeded debuginfo files # Copyright 2009 Red Hat, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # # Author: Will Woods function duration { str="$1" total="" days=${str%%d*} [ "$days" != "$str" ] && str=${str##${days}d} || days=0 hours=${str%%h*} [ "$hours" != "$str" ] && str=${str##${hours}h} || hours=0 mins=${str%%m*} [ "$mins" != "$str" ] || mins=0 if [[ "$days$hours$mins" =~ ^[0-9]+$ ]]; then total=$((($days*24+$hours)*60+$mins)) fi echo "$total" } function usage { echo "usage: debuginfofs-cleanup DURATION" echo "removes any debuginfofs files which haven't been updated recently." echo "DURATION is a string of the form: XdXhXm, e.g. '3d', '2h5m'" exit 1 } if [[ ! "$1" =~ ^([0-9]+[dhm])+$ ]]; then usage else age=$(duration $1) if [ "$age" == "" ]; then echo "error: unparseable duration $1" usage fi fi exportdir="$(sed -ne 's/ *exportdir *=\(.*\)$/\1/p' /etc/debuginfofs.conf 2>/dev/null)" if [ ! -w "$exportdir/build-id" ]; then echo "Can't remove files from $exportdir. Aborting." exit 1 fi echo "Looking for files older than $1 ($age min)" count=$(find $exportdir/build-id -type f -mmin "+$age" | wc -l) if [ $count -eq 0 ]; then echo "Nothing to clean up." exit 0 else echo "Removing $count debuginfo files" fi echo "Before:" df -h $exportdir find $exportdir/build-id -type f -mmin "+$age" -delete find $exportdir/packages -mindepth 3 -maxdepth 3 -mmin "+$age" \ -exec rm -rf {} + echo "Now:" df -h $exportdir