====== Gentoo System Backup ======
I just want to backup my Gentoo System, like a stage-X, so I can restore it when the system is broken, just with one command like
tar xvf gentoo-stage-x.tgz
So I found a script in the Gentoo forum
* a great backup system for gentoo workstations:http://forums.gentoo.org/viewtopic-t-65669.html
After some minor adjust, the script works as I want.
Actually, this script is really simple, the core command is:
cat ${list} | xargs tar zlcvf ${BKPDIR}/${type}.`date +%Y-%m-%d-%H%M`.${ext}
Just use the tar to create the package according to the directory list in sys.lst
#!/bin/sh
# for FULL backups
# this backs up the important stuffs listed in ${lists} to ${BKPDIR}
# the lists *should* be in ${BKPDIR} and named .lst
# the resulting backups will be ..tgz
#
# notes:
# variables in CAPS are ok for you to set
# change the other variables if you know what you're doing
# you can get fancy in the lists... (think xargs *wink*)
# assumes /boot is usually unmounted, and has an /etc/fstab entry
# follow your security policy when setting perms on ${BKPDIR}
#
# written by razamatan
#
# DISCLAIMER: razamatan didn't write this if something goes wrong
BKPDIR=/home/pjq/backup # where the backups go
BOOT=boot #sys # list that has /boot
NUMBKPS=3 # how many backups to keep
if [ ! -d ${BKPDIR} ] ; then
echo ${BKPDIR} is not a valid directory or is non-existant
exit -1
fi
lists=${BKPDIR}/*.lst
ext=tgz
for list in `ls ${lists}`; do
type=`basename ${list} .lst`
if [ ${type} = ${BOOT} ] ; then mount /boot ; fi
echo cat ${list} | xargs tar zlcvf ${BKPDIR}/${type}.`date +%Y-%m-%d-%H%M`.${ext} # > /dev/null 2>&1
cat ${list} | xargs tar zlcvf ${BKPDIR}/${type}.`date +%Y-%m-%d-%H%M`.${ext} # > /dev/null 2>&1
if [ ${type} = ${BOOT} ] ; then umount /boot ; fi
num=${NUMBKPS}
for evict in `ls -t ${BKPDIR}/${type}.*.${ext}`; do
if [ ${num} -le 0 ] ; then rm -f ${evict}
else num=$((${num}-1)) ; fi
done
done
/bin
/boot
/root
--exclude=/dev
/etc
/sbin
/lib
--exclude=/sys
/lib32
/lib64
/usr
--exclude=/usr/portage/distfiles
--exclude=/usr/src/linux
--exclude=/usr/portage
/usr/src/linux/.config
/var