mirror of
https://github.com/serghey-rodin/vesta.git
synced 2025-08-14 02:28:03 -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 #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
# Set backup directory if undefined
|
||||
if [ -z "$BACKUP" ]; then
|
||||
BACKUP=/home/backup/
|
||||
fi
|
||||
mkdir -p $BACKUP
|
||||
|
||||
# Get current time
|
||||
start_time=$(date '+%s')
|
||||
|
||||
|
@ -471,22 +477,34 @@ local_backup(){
|
|||
|
||||
# Defining ftp command function
|
||||
ftpc() {
|
||||
ftp -n $HOST $PORT <<EOF
|
||||
ftp -n $HOST $FTP_PORT <<EOF
|
||||
quote USER $USERNAME
|
||||
quote PASS $PASSWORD
|
||||
binary
|
||||
cd $BPATH
|
||||
$1
|
||||
$2
|
||||
$3
|
||||
quit
|
||||
EOF
|
||||
}
|
||||
|
||||
# Defining ftp storage function
|
||||
ftp_backup(){
|
||||
ftp_backup() {
|
||||
# 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
|
||||
if [ -z "$HOST" ] || [ -z "$USERNAME" ] || [ -z "$PASSWORD" ] ||\
|
||||
[ -z "$BPATH" ]; then
|
||||
|
||||
# Checking variables
|
||||
if [ -z "$HOST" ] || [ -z "$USERNAME" ] || [ -z "$PASSWORD" ]; then
|
||||
rm -rf $tmpdir
|
||||
echo "Can't parse ftp backup configuration" | $mail -s "$subj" $email
|
||||
echo "Error: Parsing error"
|
||||
|
@ -499,21 +517,31 @@ ftp_backup(){
|
|||
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"
|
||||
|
||||
# Checking ftp permission
|
||||
ftmpdir=$(mktemp -u -p $BPATH)
|
||||
command="mkdir $ftmpdir
|
||||
rm $ftmpdir"
|
||||
if [ ! -z "$(ftpc "$command")" ] ; then
|
||||
# Checking ftp connection
|
||||
if [ ! -z "$(ftpc)" ]; then
|
||||
rm -rf $tmpdir
|
||||
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
|
||||
log_event "$E_FTP" "$EVENT"
|
||||
exit $E_FTP
|
||||
fi
|
||||
|
||||
# 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)
|
||||
if [ "$backups_count" -ge "$BACKUPS" ]; then
|
||||
backups_rm_number=$((backups_count - BACKUPS + 1))
|
||||
|
@ -522,19 +550,19 @@ ftp_backup(){
|
|||
deprecated="$deprecated $backup"
|
||||
echo -e "$(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
|
||||
fi
|
||||
|
||||
# Uploading backup archive
|
||||
if [ "$localbackup" = 'yes' ]; then
|
||||
cd $BACKUP
|
||||
ftpc "put $user.$DATE.tar"
|
||||
ftpc "cd $BPATH" "put $user.$DATE.tar"
|
||||
else
|
||||
cd $tmpdir
|
||||
tar -cf $BACKUP/$user.$DATE.tar .
|
||||
cd $BACKUP/
|
||||
ftpc "put $user.$DATE.tar"
|
||||
ftpc "cd $BPATH" "put $user.$DATE.tar"
|
||||
rm -f $user.$DATE.tar
|
||||
fi
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue