Browse Source

Putting all this into functions & prepare noprompt

pull/1144/head
UltimateByte 9 years ago
committed by GitHub
parent
commit
d47037d782
  1. 93
      lgsm/functions/command_backup.sh

93
lgsm/functions/command_backup.sh

@ -11,10 +11,19 @@ local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))"
check.sh check.sh
fn_print_header fn_print_header
fn_script_log "Entering backup" fn_script_log "Entering backup"
# Check if a backup is pending or has been aborted using .backup.lock # Check if a backup is pending or has been aborted using .backup.lock
fn_check_pending_backup(){
if [ -f "${tmpdir}/.backup.lock" ]; then if [ -f "${tmpdir}/.backup.lock" ]; then
fn_print_warning_nl "A backup is currently running or has been aborted." fn_print_warning_nl "A backup is currently running or has been aborted."
fn_script_log_warn "A backup is currently running or has been aborted" fn_script_log_warn "A backup is currently running or has been aborted"
if [ "${backupnoprompt}" == "1" ]; then
# Exit if is in noprompt mode
fn_print_error "Backup already in progress"
fn_script_log_fatal "Backup already in progress"
core_exit.sh
else
# Prompts user if in regular mode
while true; do while true; do
read -e -i "y" -p "Continue anyway? [Y/N]" yn read -e -i "y" -p "Continue anyway? [Y/N]" yn
case $yn in case $yn in
@ -25,6 +34,11 @@ if [ -f "${tmpdir}/.backup.lock" ]; then
done done
echo "" echo ""
fi fi
fi
}
# Initialization
fn_backup_init(){
fn_print_dots "" fn_print_dots ""
sleep 0.5 sleep 0.5
# Prepare backup file name with servicename current date # Prepare backup file name with servicename current date
@ -35,6 +49,8 @@ fn_print_info_nl "A total of ${rootdirduexbackup} will be compressed into the fo
fn_script_log "A total of ${rootdirduexbackup} will be compressed into the following backup: ${backupdir}/${backupname}.tar.gz" fn_script_log "A total of ${rootdirduexbackup} will be compressed into the following backup: ${backupdir}/${backupname}.tar.gz"
echo "${backupdir}/${backupname}.tar.gz" echo "${backupdir}/${backupname}.tar.gz"
echo "" echo ""
# Prompt to start the backup if not in noprompt mode
if [ "${backupnoprompt}" != "1" ]; then
while true; do while true; do
read -e -i "y" -p "Continue? [Y/n]" yn read -e -i "y" -p "Continue? [Y/n]" yn
case $yn in case $yn in
@ -43,14 +59,24 @@ while true; do
* ) echo "Please answer yes or no.";; * ) echo "Please answer yes or no.";;
esac esac
done done
echo ""
fi
}
# Check if server is started # Check if server is started
fn_backup_stop_server(){
check_status.sh check_status.sh
if [ "${status}" != "0" ]; then if [ "${status}" != "0" ]; then
echo "" echo ""
fn_print_warning_nl "${servicename} is currently running." fn_print_warning_nl "${servicename} is currently running."
fn_script_log_warn "${servicename} is currently running" fn_script_log_warn "${servicename} is currently running"
sleep 0.5 sleep 0.5
if [ "${backupnoprompt}" == "1" ]; then
# Don't stop the server in noprompt mode
serverstopped="no"
else
# Otherwise ask the user if it should be stopped or not
while true; do while true; do
read -e -i "n" -p "Stop ${servicename} while running the backup? [y/N]" yn read -e -i "n" -p "Stop ${servicename} while running the backup? [y/N]" yn
case $yn in case $yn in
@ -60,7 +86,11 @@ if [ "${status}" != "0" ]; then
esac esac
done done
fi fi
fi
}
# Create required folders
fn_backup_directories(){
fn_print_dots "Backup in progress, please wait..." fn_print_dots "Backup in progress, please wait..."
fn_script_log_info "Initiating backup" fn_script_log_info "Initiating backup"
sleep 0.5 sleep 0.5
@ -78,30 +108,60 @@ if [ -n "${tmpdir}" ]&&[ ! -d "${tmpdir}" ]; then
fn_script_log "Creating ${tmpdir}" fn_script_log "Creating ${tmpdir}"
mkdir -p "${tmpdir}" mkdir -p "${tmpdir}"
fi fi
}
# Create lockfile # Create lockfile
fn_backup_create_lockfile(){
if [ -d "${tmpdir}" ]; then if [ -d "${tmpdir}" ]; then
touch "${tmpdir}/.backup.lock" touch "${tmpdir}/.backup.lock"
fn_script_log "Lockfile created" fn_script_log "Lockfile created"
fi fi
}
# Compressing files # Compressing files
fn_backup_compression(){
fn_script_log "Compressing ${rootdirduexbackup}" fn_script_log "Compressing ${rootdirduexbackup}"
tar -czf "${backupdir}/${backupname}.tar.gz" -C "${rootdir}" --exclude "backups" ./* tar -czf "${backupdir}/${backupname}.tar.gz" -C "${rootdir}" --exclude "backups" ./*
fn_script_log "Compression over" fn_script_log "Compression over"
}
# Check tar exit code and set the result
fn_check_tar_exit(){
if [ $? == 0 ]; then
backupresult="FAIL"
else
backupresult="PASS"
fi
}
# Remove lockfile # Remove lockfile
if [ -d "${tmpdir}" ]; then fn_backup_remove_lockfile(){
if [ -d "${tmpdir}" ]&&[ -f "${tmpdir}/.backup.lock" ]; then
rm "${tmpdir}/.backup.lock" rm "${tmpdir}/.backup.lock"
fn_script_log "Lockfile removed" fn_script_log "Lockfile removed"
fi fi
}
# Check tar exit code and act accordingly fn_backup_summary(){
if [ $? == 0 ]; then # when backupresult="PASS"
# Exit code doesn't report any error if [ "${backupresult}" == "PASS" ]; then
fn_print_ok_nl "Backup created: ${backupname}.tar.gz is $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}') size" fn_print_ok_nl "Backup created: ${backupname}.tar.gz is $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}') size"
fn_script_log_pass "Backup created: ${backupdir}/${backupname}.tar.gz is $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}') size" fn_script_log_pass "Backup created: ${backupdir}/${backupname}.tar.gz is $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}') size"
# When backupresult="FAIL"
elif [ "${backupresult}" == "PASS" ]; then
fn_print_error_nl "Backup failed: ${backupname}.tar.gz"
fn_script_log_error "Backup failed: ${backupname}.tar.gz"
core_exit.sh
else
fn_print_error_nl "Could not determine compression result."
fn_script_log_error "Could not determine compression result."
core_exit.sh
fi
}
# Clear old backups if backupdays variable exists # Clear old backups according to maxbackups and maxbackupdays variables
fn_backup_clearing(){
if [ -n "${backupdays}" ]; then if [ -n "${backupdays}" ]; then
# Count how many backups can be cleared # Count how many backups can be cleared
backupclearcount=$(find "${backupdir}"/ -type f -mtime +"${backupdays}"|wc -l) backupclearcount=$(find "${backupdir}"/ -type f -mtime +"${backupdays}"|wc -l)
@ -129,15 +189,28 @@ if [ $? == 0 ]; then
else else
fn_script_log "No backups to clear since backupdays variable is empty" fn_script_log "No backups to clear since backupdays variable is empty"
fi fi
}
# Restart the server if it was stopped for the backup # Restart the server if it was stopped for the backup
fn_backup_start_back(){
if [ "${serverstopped}" == "yes" ]; then if [ "${serverstopped}" == "yes" ]; then
exitbypass=1 exitbypass=1
command_start.sh command_start.sh
fi fi
else }
# Exit code reports an error
fn_print_error_nl "Backup failed: ${backupname}.tar.gz" # Run functions
fn_script_log_error "Backup failed: ${backupname}.tar.gz" fn_check_pending_backup
fi fn_backup_init
fn_backup_stop_server
fn_backup_directories
fn_backup_create_lockfile
fn_backup_compression
fn_check_tar_exit
fn_backup_remove_lockfile
fn_backup_summary
fn_backup_clearing
fn_backup_start_back
sleep 0.5 sleep 0.5
core_exit.sh core_exit.sh

Loading…
Cancel
Save