summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xserver/debuginfofs-cleanup42
1 files changed, 37 insertions, 5 deletions
diff --git a/server/debuginfofs-cleanup b/server/debuginfofs-cleanup
index ea1bd42..5b9f049 100755
--- a/server/debuginfofs-cleanup
+++ b/server/debuginfofs-cleanup
@@ -18,12 +18,36 @@
#
# Author: Will Woods <wwoods@redhat.com>
-if [ "$1" == "" ] || [[ "$1" =~ [^0-9] ]]; then
- echo "usage: debuginfofs-cleanup DAYS"
- echo "removes any debuginfofs files which haven't been seen in DAYS"
+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="$1"
+ 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)"
@@ -33,9 +57,17 @@ if [ ! -w "$exportdir/build-id" ]; then
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
-echo "Cleaning up files older than $age days"
find $exportdir/build-id -type f -mtime "+$age" -delete
find $exportdir/packages -mindepth 3 -maxdepth 3 -mtime "+$age" \
-exec rm -rf {} +