aboutsummaryrefslogtreecommitdiffstats
path: root/mayor-orig/bin/backup.sh
blob: 46a11f4b8490044622a387ecb08cac7b8a33382c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
#!/bin/bash

OPT_SPEC="hf:d::"
LONG_OPT_SPEC="help,file:,backup-file:,dir:,backup-dir::"
PARSED_OPTIONS=$(getopt -n "$0" -a -o $OPT_SPEC --long $LONG_OPT_SPEC -- "$@")
OPTIONS_RET=$?
eval set -- "$PARSED_OPTIONS"

help_usage() {
cat <<EOF

Backup használata: mayor backup [opciók]

A parancs segítségével menthetjük a MaYoR rendszer adatbázisait, aktuális forrását és 
beállításait. A mentés alapértelmezetten az aktuális dátum alapján lesz elnevezve 
"YYYYmmdd.tgz" alakban (pl. $DATE.tgz).

A mentési könyvtár, a szükséges jelszavak és egyéb mentési paraméterek beállításait a 
/etc/mayor/main.conf állományban kell megadni.

Opciók:
    -h, --help:                A parancs leírása (amit most olvasol...)
    -f, --file, --backup-file: A mentési állomány neve
    -d, --dir, --backup-dir:   A mentési könyvtár elérési útja

EOF
}

#if [ $OPTIONS_RET -ne 0 ] || [ $# -le 1 ]; then  help_usage; exit; fi
if [ $OPTIONS_RET -ne 0 ]; then  help_usage; exit; fi
                                
BACKUPFILE="$DATE"
while [ $# -ge 1 ]; do
    case $1 in
        --help | -h )           	help_usage
                            		exit
                            		;;

        --backup-file | --file | -f )	shift
                            		BACKUPFILE="$1"
                            		echo "Backup fájl: $BACKUPFILE"
                            		;;
    
        --backup-dir | --dir | -d ) 	shift
                            		BACKUPDIR="$1"
                            		echo "Backup könyvtár: $BACKUPDIR"
                            		;;

        -- )                        	shift
                            		break
                            		;;

        * )                     	echo "HIBA: ismeretlen opció: $1" # ide elvileg sose jutunk, mert a getopts már kiszűrte a hibás paramétereket...
                            		exit
                            		;;
    esac
    shift
done

###########################

if [ -z $BACKUPDIR ]; then
    if [ -f ../config/backup.conf ]; then
        echo "WARNING: elavult konfigurációs állomány! (backup.conf)"
        echo "    A frissítési rendszer a korábbi backup.conf és update.conf állományok helyett"
        echo "    egy új, rögzített helyen lévő állományt használ: /etc/mayor/main.conf"
        echo "    Most - ennek hiányában - a régebbi állományt használjuk"
        . ../config/backup.conf
    else
        echo -e "\n\nERROR: Hiányzó konfigurációs file: ../config/backup.conf"
	pwd
        exit 11
    fi
fi

##
# A könyvtárak létrehozása
##

if [ ! -e  $BACKUPDIR ]; then
    mkdir $BACKUPDIR > /dev/null 2>&1
    if [ $? -ne 0 ]; then
	echo "Nem sikerült a ${BACKUPDIR} könyvtárat létrehozni!"
	echo "MaYoR Backup failure!"
	exit 1
    fi
fi
chown $WEB_SERVER_USER $BACKUPDIR
chmod 700 $BACKUPDIR

if [ -e $BACKUPDIR/$BACKUPFILE.tgz ]; then
    echo -e "\n\nERROR: már volt mentés: $BACKUPDIR/$BACKUPFILE.tgz\n"
    exit 1
fi
mkdir $BACKUPDIR/$BACKUPFILE
chown $WEB_SERVER_USER $BACKUPDIR/$BACKUPFILE
chmod 700 $BACKUPDIR/$BACKUPFILE

##
# mysql adatbázis mentése
##

if [ "$MYSQL_HOST" == "" ]; then
    MYSQL_HOST="localhost"
fi

if [ -f $MYSQL ]; then
    DATABASES=''
    for DB in `echo 'SHOW DATABASES' | mysql -h$MYSQL_HOST -p$MYSQL_PW -u$MYSQL_USER`; do
	if [[ ! $EXCLUDED_DBS =~ .*$DB.* ]] && { [[ $DB =~ ^mayor.* ]] || [[ $DB =~ ^naplo.* ]] || [[ $DB =~ ^intezmeny.* ]]; } then 
	    DATABASES="$DATABASES $DB"
	fi
    done

else
    echo -e "\n\nERROR: A mysql kliens nem található: $MYSQL\n"
    exit 2
fi

for DATABASE in $DATABASES; do
    mysqldump -R -h$MYSQL_HOST -p$MYSQL_PW -u$MYSQL_USER $DATABASE >> $BACKUPDIR/$BACKUPFILE/$DATABASE.sql
done

##
# A honlap mentése
##

mkdir $BACKUPDIR/$BACKUPFILE/log
cp -a $BASEDIR/log/revision $BACKUPDIR/$BACKUPFILE/log/revision
cp -a $BASEDIR/www $BACKUPDIR/$BACKUPFILE/www
cp -a $BASEDIR/config $BACKUPDIR/$BACKUPFILE/config


if [ "$SAVELDAP" == 1 ]; then

    ##
    # Az LDAP adatbázis
    ##

    /etc/init.d/slapd stop
    sleep 1

    slapcat -b $BASEDN -l $BACKUPDIR/$BACKUPFILE/ldap.ldif

    cp -a $LDAPDBDIR $BACKUPDIR/$BACKUPFILE/ldap

    /etc/init.d/slapd start

    ##
    # LDAP konfig file-ok mentése (schema)
    ##

    mkdir $BACKUPDIR/$BACKUPFILE/etc
    cp -a  $LDAPCONFDIR $BACKUPDIR/$BACKUPFILE/etc/

fi

##
# Becsomagolás
##

cd $BACKUPDIR
## Ez a korábbi szerintem hibás:
## tar cfz ${BACKUPFILE}.tgz ${DATE}
tar cfz ${BACKUPFILE}.tgz ${BACKUPFILE}
rm -rf $BACKUPFILE
#Debian6 inkompatibilis: tar cfz ${BACKUPFILE}.tgz --remove-files ${BACKUPFILE}

##
# Mentés átmásolása másik szerverre
# rsync # Losonci János kiegészítése (losy@agymk.sulinet.hu)
##

if [ "$RSYNC" == 1 ]; then
    RSYNCBIN=`which rsync`
    if [ "$RSYNCBIN" != "" ]; then
       echo $RSYNCBIN -auvE $BACKUPDIR/   $RUSER@$RHOST:$RPATH/
       $RSYNCBIN -auvE $BACKUPDIR/   $RUSER@$RHOST:$RPATH/
       if [ $? -ne 0 ]; then
	    echo "rsync error!"
       fi
    fi
fi

##
# Elavult mentés törlése
##

declare -i BDAYS=BACKUPDAYS
if [ $BDAYS -gt 0 ]; then
    find $BACKUPDIR -mtime +$BDAYS -exec rm {} \;
fi