#!/bin/bash # give some time for log collector to do its job, 5 minutes didn't seem to be enough clean_delay=20 # this is a better implementation, it will catch any file in the s3 share, whatever folder path there is [[ ! -d /data/ngenix/extracting-s3fs/ ]] && echo error: could not find /data/ngenix/extracting-s3fs/ && exit 1 [[ -z `mount | grep s3fs` ]] && echo error: s3fs not mounted && exit 1 mkdir -p /data/ngenix/traces/ cd /data/ngenix/traces/ [[ ! -f last ]] && touch last mv -f last last.old find /data/ngenix/s3fs/logs/ -type f > last oldmd5=`md5sum last.old | awk '{print $1}'` newmd5=`md5sum last | awk '{print $1}'` if [[ ! $oldmd5 = $newmd5 ]]; then date --rfc-email echo -n \ cleaning up $clean_delay minutes old files in /data/ngenix/extracting-s3fs/ ... find /data/ngenix/extracting-s3fs/ -maxdepth 1 -type f -mmin +$clean_delay -exec rm -f {} \; && echo done echo \ new log archives are: logs=`diff last.old last | sed -rn 's/^> (.*)/\1/p'` if [[ -z $logs ]]; then echo \ info: no _new_ log archive - but some got removed # echo /data/ngenix/s3fs/logs/s91051/s91051_20241219_121458.log.gz | sed -rn 's@.*/([^/]+)$@\1@p' #diff last.old last echo exit 1 fi echo "$logs" for logpath in $logs; do logfile=${logpath##*/} logfile=`echo $logfile | sed 's/\.gz//'` if [[ -f /data/ngenix/extracting-s3fs/$logfile ]]; then # keep up with the loop even if that one exists echo -e \ warn: /data/ngenix/extracting-s3fs/$logfile is already there\\n else echo -n \ /data/ngenix/extracting-s3fs/$logfile ... nice zcat $logpath > /data/ngenix/extracting-s3fs/$logfile && echo done || echo FAIL fi unset logfile done; unset log echo fi