improving backup function

This commit is contained in:
Serghey Rodin 2013-03-20 21:49:47 +02:00
commit 6fbfb3d28b

View file

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