#!/bin/sh
# /etc backup	 <wolf@pld.org.pl>
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

