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 |