All pastes #32744 Raw Edit

Stuff

public text v1 · immutable
#32744 ·published 2005-12-07 00:42 UTC
rendered paste body
#!/bin/bash

# how many backups to keep
KEEP=5
# prefix of backups (must be a local path)
# if /path/backup is used, then /path/backup.2005-09-03.12-45-23 etc. will be created (with current date)
PREFIX=/backup/etc
# source to backup from
SOURCE=/etc


###########################################################


# get current timestamp
NOW=`date +%Y-%m-%d.%H-%M-%S`

echo "[BACKUP] Starting at "`date`
echo "[BACKUP] Backing up "$SOURCE" to "$PREFIX"."$NOW

COUNT=0
for i in $PREFIX.*
do
        if [ -d $i -a ! -L $i ]
        then
                COUNT=$(($COUNT+1))
        fi
done;

TOTAL=$COUNT
DELETE=$(($TOTAL-$KEEP))

echo "[BACKUP] "$TOTAL" total backups, "$DELETE" to delete"

COUNT=0
for i in $PREFIX.*
do
do
        if [ -d $i -a ! -L $i ]
        then
                COUNT=$(($COUNT+1))
                if [ $COUNT -le $DELETE ]
                then
                        echo "[BACKUP] Removing "$i
                        rm -rf $i
                fi

                if [ $COUNT -eq $TOTAL ]
                then
                        LATEST=$i
                fi
        fi
done;

echo "[BACKUP] Latest is "$LATEST



# copy using hardlinks to new timestamp directory
echo "[BACKUP] Creating new directory with hardlinks.."
cp -al $LATEST $PREFIX.$NOW

# do actual backup
echo "[BACKUP] Running rsync.."
rsync -aHx --numeric-ids --delete  $SOURCE $PREFIX.$NOW/

# create symlink for current
rm $PREFIX.cur
ln -s $PREFIX.$NOW $PREFIX.cur
echo "[BACKUP] Done"