weekly, monthly

This commit is contained in:
Vincent Riquer 2015-11-19 14:05:13 +01:00
parent b8021ce99d
commit 3f0f29798b
2 changed files with 70 additions and 0 deletions

View File

@ -5,6 +5,8 @@ REMOTE_LOCATION=""
EXCLUDES=/dev/null EXCLUDES=/dev/null
DEST="" DEST=""
MAX_ROTATE=7 MAX_ROTATE=7
WEEK_KEEP=0
MONTH_KEEP=0
BWLIMIT=0 # kBps BWLIMIT=0 # kBps
TIMEOUT=1800 TIMEOUT=1800
RETRY=5 RETRY=5

View File

@ -207,6 +207,58 @@ rotateBackup() {
fi fi
done done
fi fi
if (( WEEK_KEEP && $(date +%u) == 1 ))
then
if [ -d "$SNAPSHOT_RW/$NAME/weekly.${WEEK_KEEP}" ]
then
echo -e "$(date +%Y-%m-%d:%H:%M:%S)\t\tDeleting $SNAPSHOT_RW/$NAME/weekly.${WEEK_KEEP}"
$RM -rf "$SNAPSHOT_RW/$NAME/weekly.${WEEK_KEEP}"
fi
for (( backup_num=$WEEK_KEEP ; backup_num >= 0 ; backup_num-- ))
do
if [ -d "$SNAPSHOT_RW/$NAME/weekly.${backup_num}" ]
then
echo -e "$(date +%Y-%m-%d:%H:%M:%S)\t\tRename" \
"$SNAPSHOT_RW/$NAME/weekly.${backup_num}" \
"to" \
"$SNAPSHOT_RW/$NAME/weekly.$(( backup_num + 1 ))"
$MV -f "$SNAPSHOT_RW/$NAME/weekly.${backup_num}" \
"$SNAPSHOT_RW/$NAME/weekly.$(( backup_num + 1 ))"
fi
done
echo -e "$(date +%Y-%m-%d:%H:%M:%S)\t\tCopying" \
"$SNAPSHOT_RW/$NAME/daily.1" \
to \
"$SNAPSHOT_RW/$NAME/weekly.0"
cp -al "$SNAPSHOT_RW/$NAME/daily.1" \
"$SNAPSHOT_RW/$NAME/weekly.0"
fi
if (( MONTH_KEEP && $(date +%d) == 1))
then
if [ -d "$SNAPSHOT_RW/$NAME/monthly.${MONTH_KEEP}" ]
then
echo -e "$(date +%Y-%m-%d:%H:%M:%S)\t\tDeleting $SNAPSHOT_RW/$NAME/monthly.${MONTH_KEEP}"
$RM -rf "$SNAPSHOT_RW/$NAME/monthly.${MONTH_KEEP}"
fi
for (( backup_num=$MONTH_KEEP ; backup_num >= 0 ; backup_num-- ))
do
if [ -d "$SNAPSHOT_RW/$NAME/monthly.${backup_num}" ]
then
echo -e "$(date +%Y-%m-%d:%H:%M:%S)\t\tRename" \
"$SNAPSHOT_RW/$NAME/monthly.${backup_num}" \
"to" \
"$SNAPSHOT_RW/$NAME/monthly.$(( backup_num + 1 ))"
$MV -f "$SNAPSHOT_RW/$NAME/monthly.${backup_num}" \
"$SNAPSHOT_RW/$NAME/monthly.$(( backup_num + 1 ))"
fi
done
echo -e "$(date +%Y-%m-%d:%H:%M:%S)\t\tCopying" \
"$SNAPSHOT_RW/$NAME/daily.1" \
to \
"$SNAPSHOT_RW/$NAME/monthly.0"
cp -al "$SNAPSHOT_RW/$NAME/daily.1" \
"$SNAPSHOT_RW/$NAME/monthly.0"
fi
} }
runBackup() { runBackup() {
@ -244,6 +296,22 @@ runBackup() {
echo -e "$(date +%Y-%m-%d:%H:%M:%S)\t\t\tdaily.$backup_num" echo -e "$(date +%Y-%m-%d:%H:%M:%S)\t\t\tdaily.$backup_num"
fi fi
done done
for (( backup_num=0 ; backup_num <= WEEK_KEEP ; backup_num++ ))
do
if [ -d "$SNAPSHOT_RW/$NAME/weekly.$backup_num" ]
then
RSYNC_OPTS="$RSYNC_OPTS --link-dest=$SNAPSHOT_RW/$NAME/weekly.$backup_num"
echo -e "$(date +%Y-%m-%d:%H:%M:%S)\t\t\tweekly.$backup_num"
fi
done
for (( backup_num=0 ; backup_num <= MONTH_KEEP ; backup_num++ ))
do
if [ -d "$SNAPSHOT_RW/$NAME/monthly.$backup_num" ]
then
RSYNC_OPTS="$RSYNC_OPTS --link-dest=$SNAPSHOT_RW/$NAME/monthly.$backup_num"
echo -e "$(date +%Y-%m-%d:%H:%M:%S)\t\t\tmonthly.$backup_num"
fi
done
if (( TIMEOUT )) if (( TIMEOUT ))
then then
RSYNC_OPTS="$RSYNC_OPTS --timeout=$TIMEOUT" RSYNC_OPTS="$RSYNC_OPTS --timeout=$TIMEOUT"