Serghey Rodin 13 лет назад
Родитель
Сommit
6fbfb3d28b
1 измененных файлов с 43 добавлено и 15 удалено
  1. 43 15
      bin/v-backup-user

+ 43 - 15
bin/v-backup-user

@@ -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
 }