@@ -27,12 +27,14 @@ check_args '1' "$#" 'user [output]'
2727# Checking argument format
2828format_validation ' user'
2929
30- # Checking web system is enabled
30+ # Checking backup system is enabled
3131is_system_enabled ' backup'
3232
3333# Checking user
3434is_user_valid
3535
36+ # Checking user backups
37+ is_backup_enabled
3638
3739
3840# ----------------------------------------------------------#
5658echo " 1.0" > $tmpdir /backup_version
5759echo " $VERSION " > $tmpdir /vesta_version
5860
61+ # Checking excludes
62+ OLD_IFS=" $IFS "
63+ IFS=$' \n '
64+ if [ -e " $V_USERS /$user /backup.excludes" ]; then
65+ if [ -z " $output " ]; then
66+ echo " -- Excludes --"
67+ fi
68+
69+ for exclude in $( cat $V_USERS /$user /backup.excludes) ; do
70+ if [ -z " $output " ]; then
71+ echo -e " \t $exclude "
72+ fi
73+ # Indirect variable references (a bit of black magic)
74+ eval ${exclude%% =* } =${exclude#* =}
75+ done
76+
77+ if [ -z " $output " ]; then
78+ echo
79+ fi
80+ fi
81+ IFS=" $OLD_IFS "
82+
5983# WEB domains
60- if [ ! -z " $WEB_SYSTEM " ] && [ " $WEB_SYSTEM " != ' no' ]; then
84+ if [ ! -z " $WEB_SYSTEM " ] && [ " $WEB_SYSTEM " != ' no' ] && [ " $WEB " != ' *' ]
85+ then
6186 if [ -z " $output " ]; then
6287 echo " -- WEB --"
6388 fi
@@ -68,8 +93,17 @@ if [ ! -z "$WEB_SYSTEM" ] && [ "$WEB_SYSTEM" != 'no' ]; then
6893 field=' $DOMAIN'
6994 search_string=' DOMAIN='
7095 domains=$( dom_clear_search)
96+ domain_list=' '
7197
98+ # Cleaning excludes
7299 for domain in $domains ; do
100+ check_exl=$( echo " $WEB " | grep -w $domain )
101+ if [ -z " $check_exl " ]; then
102+ web_list=" $web_list $domain "
103+ fi
104+ done
105+
106+ for domain in $web_list ; do
73107 if [ -z " $output " ]; then
74108 echo -e " \t$( date +%H:%m:%S) $domain "
75109 fi
@@ -139,7 +173,10 @@ if [ ! -z "$WEB_SYSTEM" ] && [ "$WEB_SYSTEM" != 'no' ]; then
139173 tar -rf $tmpdir /web/$domain /$domain .tar conf cert
140174 mv $tmpdir /web/$domain /$domain .tar $tmpdir /web/
141175 rm -rf $tmpdir /web/$domain
142- gzip -$V_BACKUP_GZIP $tmpdir /web/$domain .tar
176+
177+ if [ ! -z " $V_BACKUP_GZIP " ]; then
178+ gzip -$V_BACKUP_GZIP $tmpdir /web/$domain .tar
179+ fi
143180
144181 done
145182 if [ -z " $output " ]; then
@@ -149,7 +186,8 @@ if [ ! -z "$WEB_SYSTEM" ] && [ "$WEB_SYSTEM" != 'no' ]; then
149186fi
150187
151188# DNS domains
152- if [ ! -z " $DNS_SYSTEM " ] && [ " $DNS_SYSTEM " != ' no' ]; then
189+ if [ ! -z " $DNS_SYSTEM " ] && [ " $DNS_SYSTEM " != ' no' ] && [ " $DNS " != ' *' ]
190+ then
153191 if [ -z " $output " ]; then
154192 echo " -- DNS --"
155193 fi
@@ -161,7 +199,15 @@ if [ ! -z "$DNS_SYSTEM" ] && [ "$DNS_SYSTEM" != 'no' ]; then
161199 search_string=' DOMAIN='
162200 domains=$( dom_clear_search)
163201
202+ # Cleaning excludes
164203 for domain in $domains ; do
204+ check_exl=$( echo " $DNS " | grep -w $domain )
205+ if [ -z " $check_exl " ]; then
206+ dns_list=" $dns_list $domain "
207+ fi
208+ done
209+
210+ for domain in $dns_list ; do
165211 if [ -z " $output " ]; then
166212 echo -e " \t$( date +%H:%m:%S) $domain "
167213 fi
189235# TBD
190236
191237# DatbaBases
192- if [ ! -z " $DB_SYSTEM " ] && [ " $DB_SYSTEM " != ' no' ]; then
238+ if [ ! -z " $DB_SYSTEM " ] && [ " $DB_SYSTEM " != ' no' ] && [ " $DB " != ' * ' ] ; then
193239 if [ -z " $output " ]; then
194240 echo " -- DB --"
195241 fi
@@ -201,10 +247,34 @@ if [ ! -z "$DB_SYSTEM" ] && [ "$DB_SYSTEM" != 'no' ]; then
201247 search_string=' DB='
202248 dbs=$( dom_clear_search)
203249
204- for db in $dbs ; do
250+ # Cleaning excludes
251+ for database in $dbs ; do
252+ check_exl=$( echo " $DB " | grep -w $database )
253+ if [ -z " $check_exl " ]; then
254+ db_list=" $db_list $database "
255+ fi
256+ done
257+
258+ for database in $db_list ; do
259+ type=$( get_db_value ' $TYPE' )
260+ host=$( get_db_value ' $HOST' )
261+ db_user=$( get_db_value ' $USER' )
262+ dump=" $tmpdir /db/$database .$type .sql"
263+ grants=" $tmpdir /db/$database .$type .$db_user "
264+
205265 if [ -z " $output " ]; then
206- echo -e " \t$( date +%H:%m:%S) $db "
266+ echo -e " \t$( date +%H:%m:%S) $database $type "
267+ fi
268+
269+ case $type in
270+ mysql) dump_db_mysql ;;
271+ pgsql) dump_db_pgsql ;;
272+ esac
273+
274+ if [ ! -z " $V_BACKUP_GZIP " ]; then
275+ gzip -$V_BACKUP_GZIP $dump
207276 fi
277+
208278 done
209279
210280 if [ -z " $output " ]; then
@@ -214,7 +284,8 @@ if [ ! -z "$DB_SYSTEM" ] && [ "$DB_SYSTEM" != 'no' ]; then
214284fi
215285
216286# Cron jobs
217- if [ ! -z " $CRON_SYSTEM " ] && [ " $CRON_SYSTEM " != ' no' ]; then
287+ if [ ! -z " $CRON_SYSTEM " ] && [ " $CRON_SYSTEM " != ' no' ] && [ " $CRON " != ' *' ]
288+ then
218289 if [ -z " $output " ]; then
219290 echo " -- CRON --"
220291 fi
@@ -238,7 +309,7 @@ if [ ! -z "$CRON_SYSTEM" ] && [ "$CRON_SYSTEM" != 'no' ]; then
238309fi
239310
240311# SSL CERTIFICATES
241- if [ ! -z " $WEB_SSL " ] && [ " $WEB_SSL " != ' no' ]; then
312+ if [ ! -z " $WEB_SSL " ] && [ " $WEB_SSL " != ' no' ] && [ " $SSL " != ' * ' ] ; then
242313 if [ -z " $output " ]; then
243314 echo " -- CERTIFICATES --"
244315 fi
@@ -293,6 +364,33 @@ if [ -e "$V_USERS/$user/history.log" ]; then
293364 cp -r $V_USERS /$user /history.log $tmpdir /vesta/
294365fi
295366
367+ if [ -e " $V_USERS /$user /backup.excludes" ]; then
368+ if [ -z " $output " ]; then
369+ echo -e " \t$( date +%H:%m:%S) backup.excludes"
370+ fi
371+ cp -r $V_USERS /$user /backup.excludes $tmpdir /vesta/
372+ fi
373+
374+ if [ -z " $output " ]; then
375+ echo
376+ fi
377+
378+ # Move tmp backup to local storage
379+ if [ " $BACKUP_SYSTEM " = ' local' ]; then
380+ if [ -z " $output " ]; then
381+ echo " ARCHIVE $V_BACKUP /$user .$V_DATE .tar"
382+ fi
383+
384+ # Checking retention
385+ check_ret=$( )
386+
387+ cd $tmpdir
388+ tar -cf $V_BACKUP /$user .$V_DATE .tar .
389+ fi
390+
391+ cd /
392+ rm -rf $tmpdir
393+
296394if [ -z " $output " ]; then
297395 echo
298396fi
0 commit comments