#!/bin/bash DIR=/mnt/2T/Backup function echoe { echo [`date +"%Y-%m-%d %H:%M:%S.%N"` - backup.sh] $@ } function mksym { # Name of symlink = $1 # Date = $2 # Directory = $3 for i in {Builders,Lobbies,MiddleEarth,Halo,Trash,Siege} do if [ ! -d /root/ramdisk/snaps/$i ] then mkdir /root/ramdisk/snaps/$i/ fi rm -rf /root/ramdisk/snaps/$i/$1 echoe ---- Adding symlink from $DIR/$3/$2/ramdisk/$i/ to /root/ramdisk/snaps/$i/$1 ln -s $DIR/$3/$2/ramdisk/$i/ /root/ramdisk/snaps/$i/$1 echoe ---- Symlink added. done } FORMATMINUTE=%Y%m%d%H%M FORMATHOURLY=%Y%m%d%H FORMATDAILY=%Y%m%d FORMATMONTHLY=%Y%m ACTUALMINUTE=$(date +%M) ACTUALHOUR=$(date +%H) ACTUALDAY=$(date +%d) ACTUALMONTH=$(date +%m) MODULO=$((ACTUALMINUTE % 15)) #ACTUALMINUTE=0 #ACTUALHOUR=1 #ACTUALDAY=1 #ACTUALMONTH=1 #MODULO=0 DATEMINUTE=$(date +${FORMATMINUTE}) DATEHOURLY=$(date +${FORMATHOURLY}) DATEDAILY=$(date +${FORMATDAILY}) DATEMONTHLY=$(date +${FORMATDAILY}) OLDMINUTE=$(date --date="6 hours ago" +${FORMATMINUTE}) OLDHOURLY=$(date --date="24 hours ago" +${FORMATHOURLY}) OLDDAILY=$(date --date="60 days ago" +${FORMATDAILY}) OLDMONTHLY=$(date --date="2 years ago" +${FORMATMONTHLY}) echoe echoe echoe ---------- echoe Starting daily/monthly/hourly backup script. echoe ---------- echoe Checking before the start of backup that happens every 15 minutes... if [ $MODULO -eq 0 ] then echoe -- Starting backup happening every 15 minutes... mkdir -p $DIR/Minutely/$DATEMINUTE/ramdisk rsync -a --exclude="snaps" /root/ramdisk/ $DIR/Minutely/$DATEMINUTE/ramdisk mksym lastminute $DATEMINUTE Minutely echoe -- Backup of every 10 minutes done. fi echoe Checking for hourly backup... if [ $ACTUALMINUTE -eq 0 ] then echoe -- Starting hourly backup... mkdir -p $DIR/Hourly/$DATEHOURLY/ramdisk rsync -a --exclude="snaps" /root/ramdisk/ $DIR/Hourly/$DATEHOURLY/ramdisk mksym lasthour $DATEHOURLY Hourly echoe -- Hourly backup done. fi echoe Checking for daily backup... if [ $ACTUALHOUR -eq 1 ] then echoe -- Starting daily backup... mkdir -p $DIR/Daily/$DATEDAILY/ramdisk rsync -a --exclude="snaps" /root/ramdisk/ $DIR/Daily/$DATEDAILY/ramdisk mksym yesterday $DATEDAILY Daily echoe -- Daily backup done. fi echoe Checking for monthly backup... if [ $ACTUALDAY -eq 1 ] then echoe -- Starting monthly backup... mkdir -p $DIR/Monthly/$DATEMONTHLY/ramdisk rsync -a --exclude="snaps" /root/ramdisk/ $DIR/Monthly/$DATEMONTHLY/ramdisk mksym lastmonth $DATEMONTHLY Monthly echoe -- Monthly backup done. fi echoe --- echoe Old directory checks echoe --- echoe Checking for directory of every 10 minutes... for REP in $DIR/Minutely/* do if [ -d $REP ] then if [ $(basename $REP) -lt $OLDMINUTE ] then echoe -- Removing $REP. rm -rf $REP echoe -- Removal done. fi fi done echoe Checking for hourly backups to delete... for REP in $DIR/Hourly/* do if [ -d $REP ] then if [ $(basename $REP) -lt $OLDHOURLY ] then echoe -- Removing $REP. rm -rf $REP echoe -- Removal done. fi fi done echoe Checking for daily backups to delete... for REP in $DIR/Daily/* do if [ -d $REP ] then if [ $(basename $REP) -lt $OLDDAILY ] then echoe -- Removing $REP. rm -rf $REP echoe -- Removal done. fi fi done echoe Checking for monthly backups to delete... for REP in $DIR/Monthly/* do if [ -d $REP ] then if [ $(basename $REP) -lt $OLDMONTHLY ] then echoe -- Removing $REP. rm -rf $REP echoe -- Removal done. fi fi done echoe --- Script terminated ---