mirror of
https://github.com/myvesta/vesta
synced 2025-08-14 18:49:21 -07:00
backup restoration 90% completed
This commit is contained in:
parent
1155e9065e
commit
65db51189c
16 changed files with 330 additions and 99 deletions
|
@ -402,7 +402,7 @@ then
|
|||
cron_record=$(wc -l $USER_DATA/cron.conf|cut -f 1 -d ' ')
|
||||
|
||||
if [ -e "/var/spool/cron/$user" ]; then
|
||||
cron_list='yes'
|
||||
cron_list="$cron_record"
|
||||
cp /var/spool/cron/$user $tmpdir/cron/
|
||||
fi
|
||||
if [ "$cron_record" -eq 1 ]; then
|
||||
|
@ -417,22 +417,28 @@ then
|
|||
fi
|
||||
|
||||
# User Directories
|
||||
echo "-- User Directories --"
|
||||
msg="$msg\n-- User Directories --"
|
||||
mkdir $tmpdir/user_dirs
|
||||
user_dirs=$(ls $HOMEDIR/$user | \
|
||||
echo "-- User Dir --"
|
||||
msg="$msg\n-- User Dir --"
|
||||
mkdir $tmpdir/user_dir
|
||||
user_dir=$(ls $HOMEDIR/$user | \
|
||||
grep -v conf | \
|
||||
grep -v web | \
|
||||
grep -v dns | \
|
||||
grep -v mail | \
|
||||
grep -v tmp)
|
||||
i=0
|
||||
for user_dir in $user_dirs; do
|
||||
for udir in $user_dir; do
|
||||
udir_list="$udir_list $udir"
|
||||
((i ++))
|
||||
echo -e "$(date "+%F %T") $user_dir"
|
||||
msg="$msg\n$(date "+%F %T") $user_dir"
|
||||
cp -pr $HOMEDIR/$user/$user_dir $tmpdir/user_dirs/
|
||||
echo -e "$(date "+%F %T") $udir"
|
||||
msg="$msg\n$(date "+%F %T") $udir"
|
||||
cp -pr $HOMEDIR/$user/$udir $tmpdir/user_dir/
|
||||
cd $tmpdir/user_dir/
|
||||
tar -czpf $udir.tar.gz $udir
|
||||
rm -rf $udir
|
||||
done
|
||||
udir_list=$(echo "$udir_list" | sed -e "s/ */\ /g" -e "s/^ //")
|
||||
|
||||
if [ "$i" -eq 1 ]; then
|
||||
echo -e "$(date "+%F %T") $i user directory"
|
||||
msg="$msg\n$(date "+%F %T") $i directory"
|
||||
|
@ -508,7 +514,7 @@ local_backup(){
|
|||
|
||||
# Defining ftp command function
|
||||
ftpc() {
|
||||
ftp -n $HOST $FTP_PORT <<EOF
|
||||
ftp -n $HOST <<EOF
|
||||
quote USER $USERNAME
|
||||
quote PASS $PASSWORD
|
||||
binary
|
||||
|
@ -648,18 +654,18 @@ done
|
|||
# Concatenating string
|
||||
backup_str="BACKUP='$user.$DATE.tar'"
|
||||
backup_str="$backup_str TYPE='$BACKUP_SYSTEM' SIZE='$size'"
|
||||
backup_str="$backup_str VESTA='yes'"
|
||||
backup_str="$backup_str WEB='${web_list// /,}'"
|
||||
backup_str="$backup_str DNS='${dns_list// /,}'"
|
||||
backup_str="$backup_str MAIL='${mail_list// /,}'"
|
||||
backup_str="$backup_str DB='${db_list// /,}'"
|
||||
backup_str="$backup_str CRON='$cron_list'"
|
||||
backup_str="$backup_str UDIR='${udir_list// /,}'"
|
||||
backup_str="$backup_str RUNTIME='$run_time' TIME='$TIME' DATE='$DATE'"
|
||||
echo "$backup_str" >> $USER_DATA/backup.conf
|
||||
chmod 660 $USER_DATA/backup.conf
|
||||
|
||||
# Clean backup queue
|
||||
sed -i "/ $user /d" $VESTA/data/queue/backup.pipe
|
||||
sed -i "/v-backup-user $user /d" $VESTA/data/queue/backup.pipe
|
||||
|
||||
# Send notification
|
||||
if [ "$notify" != 'no' ]; then
|
||||
|
|
|
@ -88,8 +88,8 @@ is_object_valid 'backup' 'BACKUP' "$backup"
|
|||
# Defining config and fields to select
|
||||
conf=$USER_DATA/backup.conf
|
||||
|
||||
fields="\$BACKUP \$TYPE \$SIZE \$VESTA \$PAM \$WEB \$DNS \$DB"
|
||||
fields="$fields \$MAIL \$CRON \$RUNTIME \$TIME \$DATE"
|
||||
fields="\$BACKUP \$TYPE \$SIZE \$WEB \$DNS \$DB \$MAIL \$CRON \$UDIR"
|
||||
fields="$fields \$RUNTIME \$TIME \$DATE"
|
||||
|
||||
# Listing backup
|
||||
case $format in
|
||||
|
|
|
@ -36,8 +36,8 @@ if [ ! -e "$conf" ]; then
|
|||
fi
|
||||
|
||||
# Defining fileds to select
|
||||
fields="\$BACKUP \$TYPE \$SIZE \$VESTA \$PAM \$WEB \$DNS \$DB"
|
||||
fields="$fields \$MAIL \$CRON \$RUNTIME \$TIME \$DATE"
|
||||
fields="\$BACKUP \$TYPE \$SIZE \$WEB \$DNS \$DB \$MAIL \$CRON \$UDIR"
|
||||
fields="$fields \$RUNTIME \$TIME \$DATE"
|
||||
|
||||
# Listing domains
|
||||
case $format in
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#!/bin/bash
|
||||
# info: restore user
|
||||
# options: USER BACKUP [WEB] [DNS] [MAIL] [DB] [CRON] [UDIRS] [NOTIFY]
|
||||
# options: USER BACKUP [WEB] [DNS] [MAIL] [DB] [CRON] [UDIR] [NOTIFY]
|
||||
#
|
||||
# The function for resotring user from backup.
|
||||
|
||||
|
@ -17,7 +17,7 @@ dns=$4
|
|||
mail=$5
|
||||
db=$6
|
||||
cron=$7
|
||||
u_dirs=$8
|
||||
udir=$8
|
||||
notify=${9-no}
|
||||
|
||||
# Define backup dir
|
||||
|
@ -47,7 +47,7 @@ is_backup_valid() {
|
|||
# Verifications #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
args='USER BACKUP [WEB] [DNS] [MAIL] [DB] [CRON] [UDIRS] [NOTIFY]'
|
||||
args='USER BACKUP [WEB] [DNS] [MAIL] [DB] [CRON] [UDIR] [NOTIFY]'
|
||||
check_args '2' "$#" $args
|
||||
validate_format 'user' 'backup'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
|
@ -574,7 +574,7 @@ if [ "$cron" != 'no' ]; then
|
|||
echo -e "$(date "+%F %T") $db"
|
||||
msg="$msg\n$(date "+%F %T") $db"
|
||||
|
||||
# unpack db container
|
||||
# unpack cron container
|
||||
tar xf $BACKUP/$backup -C $tmpdir ./cron
|
||||
if [ "$?" -ne 0 ]; then
|
||||
echo "Error: can't unpack cron contaner"
|
||||
|
@ -593,9 +593,68 @@ if [ "$cron" != 'no' ]; then
|
|||
msg="$msg\n"
|
||||
fi
|
||||
|
||||
# Restore user directories
|
||||
if [ "$udir" != 'no' ]; then
|
||||
echo "-- USER DIR --"
|
||||
msg="$msg\n-- USER DIR --"
|
||||
|
||||
# unpack user dir container
|
||||
if [ ! -z "$(tar -tf $BACKUP/$backup |grep './user_dir')" ]; then
|
||||
|
||||
# Create user dir list
|
||||
udir_list=$(tar -tf $BACKUP/$backup | grep "^./user_dir" |\
|
||||
grep tar.gz | cut -f 3 -d '/' | sed -e "s/.tar.gz//")
|
||||
|
||||
if [ ! -z "$udir" ]; then
|
||||
udir_include_list=$(mktemp)
|
||||
for udir_include in ${udir//,/ }; do
|
||||
echo "^$udir_include$" >> $udir_include_list
|
||||
done
|
||||
udir_list=$(echo "$udir_list" | egrep -f $udir_include_list )
|
||||
rm -f $udir_include_list
|
||||
fi
|
||||
|
||||
for user_dir in $udir_list; do
|
||||
echo -e "$(date "+%F %T") $user_dir"
|
||||
msg="$msg\n$(date "+%F %T") $user_dir"
|
||||
|
||||
# unpack user_dir container
|
||||
tar xf $BACKUP/$backup -C $tmpdir ./user_dir/$user_dir.tar.gz
|
||||
if [ "$?" -ne 0 ]; then
|
||||
echo "Error: can't unpack $user_dir user dir contaner"
|
||||
echo "Can't unpack $user_dir user dir contaner" |\
|
||||
$send_mail -s "$subj" $email
|
||||
rm -rf $tmpdir
|
||||
exit $E_PARSING
|
||||
fi
|
||||
|
||||
tar xzf $tmpdir/user_dir/$user_dir.tar.gz -C $HOMEDIR/$user
|
||||
if [ "$?" -ne 0 ]; then
|
||||
echo "Error: can't unpack $user_dir user dir contaner"
|
||||
echo "Can't unpack $user_dir user dir contaner" |\
|
||||
$send_mail -s "$subj" $email
|
||||
rm -rf $tmpdir
|
||||
exit $E_PARSING
|
||||
fi
|
||||
done
|
||||
fi
|
||||
echo
|
||||
msg="$msg\n"
|
||||
fi
|
||||
|
||||
# Remove temporary data
|
||||
rm -rf $tmpdir
|
||||
|
||||
# Clean restore queue
|
||||
sed -i "/v-restore-user $user /d" $VESTA/data/queue/backup.pipe
|
||||
|
||||
# Send notification
|
||||
if [ "$notify" != 'no' ]; then
|
||||
subj="$user → restore has been completed"
|
||||
email=$(get_user_value '$CONTACT')
|
||||
echo -e "$msg" | $send_mail -s "$subj" $email
|
||||
fi
|
||||
|
||||
|
||||
#----------------------------------------------------------#
|
||||
# Vesta #
|
||||
|
|
|
@ -26,14 +26,14 @@ validate_format 'user'
|
|||
is_system_enabled "$BACKUP_SYSTEM"
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_backup_enabled
|
||||
is_backup_scheduled
|
||||
is_backup_scheduled 'backup'
|
||||
|
||||
|
||||
#----------------------------------------------------------#
|
||||
# Action #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
# Adding backup to pipe
|
||||
# Adding backup task to the queue
|
||||
echo "$BIN/v-backup-user $user yes" >> $VESTA/data/queue/backup.pipe
|
||||
|
||||
|
56
bin/v-schedule-user-restore
Executable file
56
bin/v-schedule-user-restore
Executable file
|
@ -0,0 +1,56 @@
|
|||
#!/bin/bash
|
||||
# info: schedule user backup restoration
|
||||
# options: USER BACKUP [WEB] [DNS] [MAIL] [DB] [CRON] [UDIR]
|
||||
#
|
||||
# The function for scheduling user backup restoration.
|
||||
|
||||
|
||||
#----------------------------------------------------------#
|
||||
# Variable&Function #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
# Argument defenition
|
||||
user=$1
|
||||
backup=$2
|
||||
web=$3
|
||||
dns=$4
|
||||
mail=$5
|
||||
db=$6
|
||||
cron=$7
|
||||
udir=$8
|
||||
|
||||
# Includes
|
||||
source $VESTA/conf/vesta.conf
|
||||
source $VESTA/func/main.sh
|
||||
|
||||
|
||||
#----------------------------------------------------------#
|
||||
# Verifications #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
check_args '2' "$#" 'USER BACKUP [WEB] [DNS] [MAIL] [DB] [CRON] [UDIR]'
|
||||
validate_format 'user'
|
||||
is_system_enabled "$BACKUP_SYSTEM"
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_backup_enabled
|
||||
is_backup_scheduled 'restore'
|
||||
|
||||
|
||||
#----------------------------------------------------------#
|
||||
# Action #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
# Adding restore task to the queue
|
||||
options="'$web' '$dns' '$mail' '$db' '$cron' '$udir'"
|
||||
echo "$BIN/v-restore-user $user $backup $options yes" \
|
||||
>> $VESTA/data/queue/backup.pipe
|
||||
|
||||
|
||||
#----------------------------------------------------------#
|
||||
# Vesta #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
# Logging
|
||||
log_event "$OK" "$EVENT"
|
||||
|
||||
exit
|
Loading…
Add table
Add a link
Reference in a new issue