mirror of
https://github.com/serghey-rodin/vesta.git
synced 2025-08-19 21:04:06 -07:00
improving backup function
This commit is contained in:
parent
b0481bd4e7
commit
6fbfb3d28b
1 changed files with 43 additions and 15 deletions
|
@ -36,6 +36,12 @@ is_backup_enabled
|
||||||
# Action #
|
# Action #
|
||||||
#----------------------------------------------------------#
|
#----------------------------------------------------------#
|
||||||
|
|
||||||
|
# Set backup directory if undefined
|
||||||
|
if [ -z "$BACKUP" ]; then
|
||||||
|
BACKUP=/home/backup/
|
||||||
|
fi
|
||||||
|
mkdir -p $BACKUP
|
||||||
|
|
||||||
# Get current time
|
# Get current time
|
||||||
start_time=$(date '+%s')
|
start_time=$(date '+%s')
|
||||||
|
|
||||||
|
@ -471,22 +477,34 @@ local_backup(){
|
||||||
|
|
||||||
# Defining ftp command function
|
# Defining ftp command function
|
||||||
ftpc() {
|
ftpc() {
|
||||||
ftp -n $HOST $PORT <<EOF
|
ftp -n $HOST $FTP_PORT <<EOF
|
||||||
quote USER $USERNAME
|
quote USER $USERNAME
|
||||||
quote PASS $PASSWORD
|
quote PASS $PASSWORD
|
||||||
binary
|
binary
|
||||||
cd $BPATH
|
|
||||||
$1
|
$1
|
||||||
|
$2
|
||||||
|
$3
|
||||||
quit
|
quit
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
# Defining ftp storage function
|
# Defining ftp storage function
|
||||||
ftp_backup(){
|
ftp_backup() {
|
||||||
# Checking config
|
# Checking config
|
||||||
|
if [ ! -e "$VESTA/conf/ftp.backup.conf" ]; then
|
||||||
|
ftp_conf_error="Can't open $VESTA/conf/ftp.backup.conf"
|
||||||
|
echo "$ftp_conf_error" | $mail -s "$subj" $email
|
||||||
|
echo "Error: $VESTA/conf/ftp.backup.conf does not exist"
|
||||||
|
sed -i "/ $user /d" $VESTA/data/queue/backup.pipe
|
||||||
|
log_event "$E_NOTEXIST" "$EVENT"
|
||||||
|
exit $E_NOTEXIST
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Parse config
|
||||||
source $VESTA/conf/ftp.backup.conf
|
source $VESTA/conf/ftp.backup.conf
|
||||||
if [ -z "$HOST" ] || [ -z "$USERNAME" ] || [ -z "$PASSWORD" ] ||\
|
|
||||||
[ -z "$BPATH" ]; then
|
# Checking variables
|
||||||
|
if [ -z "$HOST" ] || [ -z "$USERNAME" ] || [ -z "$PASSWORD" ]; then
|
||||||
rm -rf $tmpdir
|
rm -rf $tmpdir
|
||||||
echo "Can't parse ftp backup configuration" | $mail -s "$subj" $email
|
echo "Can't parse ftp backup configuration" | $mail -s "$subj" $email
|
||||||
echo "Error: Parsing error"
|
echo "Error: Parsing error"
|
||||||
|
@ -499,21 +517,31 @@ ftp_backup(){
|
||||||
echo -e "$(date "+%F %T") FTP ftp://$HOST$BPATH/$user.$DATE.tar"
|
echo -e "$(date "+%F %T") FTP ftp://$HOST$BPATH/$user.$DATE.tar"
|
||||||
msg="$msg\n$(date "+%F %T") FTP ftp://$HOST$BPATH/$user.$DATE.tar"
|
msg="$msg\n$(date "+%F %T") FTP ftp://$HOST$BPATH/$user.$DATE.tar"
|
||||||
|
|
||||||
# Checking ftp permission
|
# Checking ftp connection
|
||||||
ftmpdir=$(mktemp -u -p $BPATH)
|
if [ ! -z "$(ftpc)" ]; then
|
||||||
command="mkdir $ftmpdir
|
|
||||||
rm $ftmpdir"
|
|
||||||
if [ ! -z "$(ftpc "$command")" ] ; then
|
|
||||||
rm -rf $tmpdir
|
rm -rf $tmpdir
|
||||||
echo "Can't login to ftp://$USERNAME@$HOST" | $mail -s "$subj" $email
|
echo "Can't login to ftp://$USERNAME@$HOST" | $mail -s "$subj" $email
|
||||||
echo "Error: FTP error"
|
echo "Error: can't login to ftp"
|
||||||
|
sed -i "/ $user /d" $VESTA/data/queue/backup.pipe
|
||||||
|
log_event "$E_FTP" "$EVENT"
|
||||||
|
exit $E_FTP
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check ftp permissions
|
||||||
|
ftpc "mkdir $BPATH" > /dev/null 2>&1
|
||||||
|
ftmpdir=$(mktemp -u -p "$BPATH")
|
||||||
|
ftp_result=$(ftpc "mkdir $ftmpdir" "rm $ftmpdir")
|
||||||
|
if [ ! -z "$ftp_result" ] ; then
|
||||||
|
rm -rf $tmpdir
|
||||||
|
echo "Can't create ftp backup folder" | $mail -s "$subj" $email
|
||||||
|
echo "Error: cant's create ftp folder"
|
||||||
sed -i "/ $user /d" $VESTA/data/queue/backup.pipe
|
sed -i "/ $user /d" $VESTA/data/queue/backup.pipe
|
||||||
log_event "$E_FTP" "$EVENT"
|
log_event "$E_FTP" "$EVENT"
|
||||||
exit $E_FTP
|
exit $E_FTP
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Checking retention
|
# Checking retention
|
||||||
backup_list=$(ftpc "ls" |awk '{print $9}' |grep "^$user\.")
|
backup_list=$(ftpc "cd $BPATH" "ls" |awk '{print $9}' |grep "^$user\.")
|
||||||
backups_count=$(echo "$backup_list" | wc -l)
|
backups_count=$(echo "$backup_list" | wc -l)
|
||||||
if [ "$backups_count" -ge "$BACKUPS" ]; then
|
if [ "$backups_count" -ge "$BACKUPS" ]; then
|
||||||
backups_rm_number=$((backups_count - BACKUPS + 1))
|
backups_rm_number=$((backups_count - BACKUPS + 1))
|
||||||
|
@ -522,19 +550,19 @@ ftp_backup(){
|
||||||
deprecated="$deprecated $backup"
|
deprecated="$deprecated $backup"
|
||||||
echo -e "$(date "+%F %T") Deleted old ftp backup: $backup_date"
|
echo -e "$(date "+%F %T") Deleted old ftp backup: $backup_date"
|
||||||
msg="$msg\n$(date "+%F %T") Deleted old ftp backup: $backup_date"
|
msg="$msg\n$(date "+%F %T") Deleted old ftp backup: $backup_date"
|
||||||
ftpc "delete $backup"
|
ftpc "cd $BPATH" "delete $backup"
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Uploading backup archive
|
# Uploading backup archive
|
||||||
if [ "$localbackup" = 'yes' ]; then
|
if [ "$localbackup" = 'yes' ]; then
|
||||||
cd $BACKUP
|
cd $BACKUP
|
||||||
ftpc "put $user.$DATE.tar"
|
ftpc "cd $BPATH" "put $user.$DATE.tar"
|
||||||
else
|
else
|
||||||
cd $tmpdir
|
cd $tmpdir
|
||||||
tar -cf $BACKUP/$user.$DATE.tar .
|
tar -cf $BACKUP/$user.$DATE.tar .
|
||||||
cd $BACKUP/
|
cd $BACKUP/
|
||||||
ftpc "put $user.$DATE.tar"
|
ftpc "cd $BPATH" "put $user.$DATE.tar"
|
||||||
rm -f $user.$DATE.tar
|
rm -f $user.$DATE.tar
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue