#!/bin/sh # /etc backup umask 077 month="`date +%Y-%m-00`" # 00, żeby się ładnie sortowało fulldate="`date +%Y-%m-%d-%H:%M`" tmp="etc-$$-$RANDOM" tmp2="diff-$$-$RANDOM" # sprawdzić, czy jest katalog, jak nie ma to zrobić if [ ! -d /var/log/etc ] then if [ -f /var/log/etc ] then echo "Wywal /var/log/etc, to pogadamy." exit 0 fi mkdir /var/log/etc fi # sprawdzić, czy jest pełny backup z aktualnego miesiąca if [ ! -f /var/log/etc/etc-$month.tar.gz ] then cd /etc tar zcf /var/log/etc/etc-$month.tar.gz . cd /var/log/etc # echo "Zrobiłem pełny backup /etc:" # ls -l etc-$month.tar.gz s1=1 fi # puścić diffa if [ -f /var/log/etc/.current ] then # jak nie jest rozpakowany w /, to niektóre linki siadają cd / mkdir $tmp cd $tmp tar zxf /var/log/etc/.current cd / diff -ruN $tmp /etc --exclude="counter" --exclude="adjtime" --exclude="rc.d" --exclude="mtab" > /tmp/$tmp2 cd /tmp # jak są różnice, to wysłać gdzie trzeba if [ -s $tmp2 ] then mail -s "/etc diff @ $fulldate" root < $tmp2 fi rm $tmp2 # i teraz już bez excludowania cd / diff -ruN $tmp /etc --exclude="mtab" > /tmp/$tmp2 cd /tmp if [ -s $tmp2 ] then mv $tmp2 /var/log/etc/etc-$fulldate gzip -f /var/log/etc/etc-$fulldate # uaktualnienie zrzutu /etc cd /etc tar zcf /var/log/etc/.current . s2=1 else rm $tmp2 fi cd / rm -rf $tmp fi # .current już jest aktualne, jak $s2==1 if [ "$s1" -eq 1 -a "$s2" -ne 1 ] then cd /var/log/etc cp -f etc-$month.tar.gz .current fi