#
# The cron bot is expected to run once a minute
+# Name of snapshot tag file for "important" snapshots. Format:
+# $CNO .... one line for each $CNO that should be preserved as snapshot
+# chcp ss $CNO && echo $CNO >> $NAMELIST
+NAMELIST=/etc/nilfs2sss.list
+
# The hour-of-day to preserve as daily snapshot
KEEPHH=12
KEEPDD=15
DEV=$1
+[ "$2" = "all" ] || LSCP="-s"
+
if [ -z "$DEV" ] ; then
DEVS=( $( mount | grep nilfs2 | sed 's/ .*//' ) )
DEV=${DEVS[0]}
MARK=( )
function marksnap() {
if [[ "${MARK[0]}" == "$1" ]] && [[ "${MARK[1]}" = "$2" ]] ; then
- chcp cp $DEV ${MARKYEAR[2]}
+ if [ -r "$NAMELIST" ] && grep -q ^$3 "$NAMELIST" ; then
+ : # Don't change important snapshots
+ else
+ chcp cp $DEV ${MARK[2]}
+ fi
fi
- MARK=( "$1" "$2" $3 )
+ MARK=( "$1" "$2" "$3" )
}
{ flock 9
date "+$DEV: %Y-%m-%d %H:%M:%S ---- checking" >&2
- lscp -s $DEV | while read CNO DATE TIME REST ; do
+ lscp $LSCP $DEV | while read CNO DATE TIME REST ; do
TS="$DATE $TIME"
[ "$CNO" = "CNO" ] && continue
- if [[ "$TS" > "$YEARLY" ]] ; then
+ if [[ ! "$TS" > "$YEARLY" ]] ; then
marksnap YEAR "${DATE:0:4}" $CNO
- elif [[ "$TS" > "$MONTHLY" ]] ; then
+ elif [[ ! "$TS" > "$MONTHLY" ]] ; then
marksnap MONTH "${DATE:5:2}" $CNO
- elif [[ "$TS" > "$WEEKLY" ]] ; then
+ elif [[ ! "$TS" > "$WEEKLY" ]] ; then
# For older than most recent week, keep last snapshot each week
marksnap WEEK "$(( 7${DATE:8:2} / 7 - 100 ))" $CNO
- elif [[ "$TS" > "$DAILY" ]] ; then
+ elif [[ ! "$TS" > "$DAILY" ]] ; then
marksnap DAY "${DATE:8:2}" $CNO
- elif [[ "$TS" > "$HOURLY" ]] ; then
+ elif [[ ! "$TS" > "$HOURLY" ]] ; then
marksnap HOUR "${DATE:8:2}-${TIME:0:2}" $CNO
else
- echo "$CNO $DATE $TIME within last hour"
+ : # echo "$CNO $DATE $TIME within last hour"
fi
done | if read X ; then
: # snapshot within last hour