View Single Post

   
  #8 (permalink)  
Old 02-21-2008, 09:38 AM
Ben O'Brien
 
Posts: n/a
Default Re: Moving to larger disk

p.s. Here is a script which does incremental backups, showing the true
awsomeness of rsync:

#!/bin/bash
# Incremental backup snapshot script v1.0

RM="/bin/rm -rf"
MV="/bin/mv"
MKDIR="/bin/mkdir -p -m 0700"

#### User definable parameters ####
SNAPSHOT_DEPTH=4

function assign_vars()
{
for (( i=0; i <= $SNAPSHOT_DEPTH; i++))
do
SNAPSHOT[$i]="$SNAPSHOT_DIR/$i"
done

}

function create_dirs()
{
for dir in ${SNAPSHOT[@]}
do
if ! test -d $dir
then
echo "creating directory $dir"
$MKDIR $dir
fi
done
}

function rotate_dirs()
{
# remove snapshots that are too old
if test -d ${SNAPSHOT[$SNAPSHOT_DEPTH]}
then
echo "deleting ${SNAPSHOT[$SNAPSHOT_DEPTH]}"
$RM ${SNAPSHOT[$SNAPSHOT_DEPTH]}
fi

for (( i=$SNAPSHOT_DEPTH; i > 0; ))
do
j=$((i--));
if test -d ${SNAPSHOT[$i]}
then
echo "moving ${SNAPSHOT[$i]} to ${SNAPSHOT[$j]}"
$MV ${SNAPSHOT[$i]} ${SNAPSHOT[$j]}
fi

done
}

COMMAND=$(basename $0 .sh)
if [ $COMMAND == transfer ]
then
SNAPSHOT_TARGET="bitslor:/home/transfer"
elif [ $COMMAND == ben ]
then
SNAPSHOT_TARGET="maclor:/Users/ben/"
elif [ $COMMAND == josh ]
then
SNAPSHOT_TARGET="bitslor:/home/josh/"
elif [ $COMMAND == public ]
then
SNAPSHOT_TARGET="bitslor:/home/public/"
else
exit 0
fi

SNAPSHOT_ROOT="/mnt/backup"
SNAPSHOT_DIR="$SNAPSHOT_ROOT/$COMMAND"

assign_vars
create_dirs

if rsync -avre ssh --progress --stats --link-dest=${SNAPSHOT[1]}
$SNAPSHOT_TARGET ${SNAPSHOT[0]}
then
rotate_dirs
elif test -d ${SNAPSHOT[0]}
then
echo "deleting ${SNAPSHOT[0]}"
$RM ${SNAPSHOT[0]}
fi
Reply With Quote