]> git.pld-linux.org Git - packages/etcbackup.git/blob - etcbackup
4ef3ea93e66f192c483a4e10e25ec697 etcbackup
[packages/etcbackup.git] / etcbackup
1 #!/bin/sh
2 # /etc backup    <wolf@pld.org.pl>
3 umask 077
4
5 month="`date +%Y-%m-00`"        # 00, ¿eby siê ³adnie sortowa³o
6 fulldate="`date +%Y-%m-%d-%H:%M`"
7 tmp="etc-$$-$RANDOM"
8 tmp2="diff-$$-$RANDOM"
9
10 # sprawdziæ, czy jest katalog, jak nie ma to zrobiæ
11 if [ ! -d /var/log/etc ]
12 then
13         if [ -f /var/log/etc ]
14         then
15                 echo "Wywal /var/log/etc, to pogadamy."
16                 exit 0
17         fi
18         mkdir /var/log/etc
19 fi
20
21 # sprawdziæ, czy jest pe³ny backup z aktualnego miesi±ca
22 if [ ! -f /var/log/etc/etc-$month.tar.gz ]
23 then
24         cd /etc
25         tar zcf /var/log/etc/etc-$month.tar.gz .
26         cd /var/log/etc
27 #       echo "Zrobi³em pe³ny backup /etc:"
28 #       ls -l etc-$month.tar.gz
29         s1=1
30 fi
31
32 # pu¶ciæ diffa
33 if [ -f /var/log/etc/.current ]
34 then
35         # jak nie jest rozpakowany w /, to niektóre linki siadaj±
36         cd /
37         mkdir $tmp
38         cd $tmp
39         tar zxf /var/log/etc/.current
40         cd /
41         diff -ruN $tmp /etc --exclude="counter" --exclude="adjtime" --exclude="rc.d" --exclude="mtab" > /tmp/$tmp2
42         cd /tmp
43         # jak s± ró¿nice, to wys³aæ gdzie trzeba
44         if [ -s $tmp2 ]
45         then
46                 mail -s "/etc diff @ $fulldate" root < $tmp2
47         fi
48         rm $tmp2
49         # i teraz ju¿ bez excludowania
50         cd /
51         diff -ruN $tmp /etc --exclude="mtab" > /tmp/$tmp2
52         cd /tmp
53         if [ -s $tmp2 ]
54         then
55                 mv $tmp2 /var/log/etc/etc-$fulldate
56                 gzip -f /var/log/etc/etc-$fulldate
57                 # uaktualnienie zrzutu /etc
58                 cd /etc
59                 tar zcf /var/log/etc/.current .
60                 s2=1
61         else
62                 rm $tmp2
63         fi
64         cd /
65         rm -rf $tmp
66 fi
67  
68 # .current ju¿ jest aktualne, jak $s2==1
69 if [ "$s1" -eq 1 -a "$s2" -ne 1 ]
70 then
71         cd /var/log/etc
72         cp -f etc-$month.tar.gz .current
73 fi
74
This page took 0.057153 seconds and 3 git commands to generate.