Pi пре 1 година
родитељ
комит
77b1b491bc
1 измењених фајлова са 62 додато и 0 уклоњено
  1. 62 0
      cleanup-files.sh

+ 62 - 0
cleanup-files.sh

@@ -0,0 +1,62 @@
+#!/bin/bash
+set -euo pipefail
+DIRECTORY=$1
+LIMIT=10000000000 # 10GB
+ACTION=print #delete
+#LIMIT=13000000 # 13MB
+#ACTION=print
+
+estimate(){
+	RECLAIM=$(find "$1" -type f -"$2" +"$3" -print0 | du -cb --files0-from=- | grep total | cut -d'	' -f1) || RECLAIM=0
+}
+
+cleanup(){
+	time="$1"
+	echo "Reclaiming $((RECLAIM/1000000)) MB of data older than $AGE ($time)..."
+	find "$DIRECTORY" -type f -"$time" +"$AGE" -"$ACTION"
+}
+
+search(){
+	upper="$3"
+	lower="$2"
+	time="$1"
+	AGE="$upper"
+	while (( upper - lower > 0)); do
+		echo "Finding files older than $AGE ($time)..."
+		estimate "$DIRECTORY" "$time" "$AGE"
+		echo "Could reclaim $((RECLAIM/1000000)) MB..."
+		if (( SIZE - RECLAIM > LIMIT ));
+	       	then
+			upper="$AGE"
+			AGE=$(((AGE + lower)/2))
+			if (( AGE == upper )); then break; fi
+		else
+			lower="$AGE"
+			AGE=$(((upper + AGE)/2))
+			if (( AGE == lower )); then break; fi
+		fi
+		sleep 0.5
+	done
+}
+
+SIZE=$(find "$DIRECTORY" -type f -print0 | du -cb --files0-from=- | grep total | cut -d'	' -f1)
+RECLAIM=0
+declare AGE
+echo "Size limit is   : $((LIMIT/1000000)) MB"
+echo "Current size is : $((SIZE/1000000)) MB"
+
+if (( SIZE < LIMIT )); then exit 0; fi
+
+echo "Need to reclaim : $(( (SIZE - LIMIT)/1000000 )) MB"
+
+search mtime 30 365
+
+if (( AGE > 30 )); then cleanup mtime && exit 0; fi
+
+search mtime 1 30
+
+if (( AGE > 1 )); then cleanup mtime && exit 0; fi
+
+search cmin 1 $((60*24))
+
+cleanup cmin