====== 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