#!/bin/bash

########################################
#   backup /etc on the whole system    #
########################################

CHRDIR=/chroot

BACKUP_ROOT=/backup
KEEPDAYS=365

BACKUP_DIR=$BACKUP_ROOT/sys-data/etc

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

function rotate_backup
{
    # delete older than 8 days
    find $BACKUP_DIR/*.tar.bz2 -mtime +8 -exec rm -f {} \; &>/dev/null

    # weekly rotate on sundays
    if [ "`date +%u`" = "7" ]; then
	find $BACKUP_DIR/*.tar.bz2 -mtime +7 -exec mv {} $BACKUP_DIR/weekly/ \; &>/dev/null
	find $BACKUP_DIR/weekly/*.tar.bz2 -mtime +$KEEPDAYS -exec rm -f {} \; &>/dev/null
    fi

    return 0
}

[ -d $BACKUP_ROOT ] || exit 21

[ -d $BACKUP_DIR ] || mkdir -p $BACKUP_DIR
[ -d $BACKUP_DIR/weekly ] || mkdir -p $BACKUP_DIR/weekly


# gather from all the places

SOURCES="/etc/"

if [ -d $CHRDIR ]; then
    chrdirs=`ls $CHRDIR`
    for chr in $chrdirs; do
	CHRETC=$CHRDIR/$chr/etc
	[ -d $CHRETC ] && SOURCES="$SOURCES $CHRETC"
    done
fi

# rotate the backup
rotate_backup

TS=`date +%Y%m%d`
TAR_FILE=$BACKUP_DIR/etc-$TS.tar.bz2

[ -f $TAR_FILE ] && rm $TAR_FILE


# -P, --absolute-paths
#    don't strip leading `/'s from file names

tar -cjPf $TAR_FILE $SOURCES

chown 0:0 $TAR_FILE
chmod 0600 $TAR_FILE

