mirror of
				https://github.com/vmstan/gravity-sync.git
				synced 2025-10-31 17:07:00 -04:00 
			
		
		
		
	3.4.6 (#244)
* Delete all backups * Remove push/pull files * Maybe rusty on my Bash * Don't delete backups if running a backup job * AND THEN * different if style * Just don't delete anything * Change messages * BACKUP * exempt cleanup from backup task * deactivate sameline * remove sameline * Cleanup samelines * More cleanup * More sameline cleanup * Increase timeout * 3.4.6 * Variables not marked * MATH * MATH? * more math in more places * NEW MATH * MAAAAATH * I don't even know * Keep trying * PLEASE * PLEASE * Too many tested variables finally worked * Add backup integrity wait * silent_error_validate * silent_error_validate removal
This commit is contained in:
		
							parent
							
								
									295b237da9
								
							
						
					
					
						commit
						73ffc9eef1
					
				| @ -3,7 +3,7 @@ SCRIPT_START=$SECONDS | ||||
| 
 | ||||
| # GRAVITY SYNC BY VMSTAN ##################### | ||||
| PROGRAM='Gravity Sync' | ||||
| VERSION='3.4.5' | ||||
| VERSION='3.4.6' | ||||
| 
 | ||||
| # For documentation or downloading updates visit https://github.com/vmstan/gravity-sync | ||||
| # Requires Pi-Hole 5.x or higher already be installed, for help visit https://pi-hole.net | ||||
| @ -52,7 +52,8 @@ ROOT_CHECK_AVOID='0'				# replace in gravity-sync.conf to overwrite | ||||
| 
 | ||||
| # Backup Customization | ||||
| BACKUP_RETAIN='3'					# replace in gravity-sync.conf to overwrite | ||||
| BACKUP_TIMEOUT='60'                 # replace in gravity-sync.conf to overwrite | ||||
| BACKUP_TIMEOUT='240'                # replace in gravity-sync.conf to overwrite | ||||
| BACKUP_INTEGRITY_WAIT='5'           # replace in gravity-sync.conf to overwrite | ||||
| 
 | ||||
| # SSH Customization | ||||
| SSH_PORT='22' 						# default SSH port | ||||
|  | ||||
| @ -1,3 +1,4 @@ | ||||
| 
 | ||||
| # GRAVITY SYNC BY VMSTAN ##################### | ||||
| # gs-backup.sh ############################### | ||||
| 
 | ||||
| @ -15,7 +16,7 @@ function task_backup() { | ||||
|     backup_local_gravity_integrity | ||||
|     backup_local_custom | ||||
|     backup_local_cname | ||||
|     backup_cleanup | ||||
|     # backup_cleanup | ||||
|      | ||||
|     logs_export | ||||
|     exit_withchange | ||||
| @ -37,6 +38,7 @@ function backup_local_gravity_integrity() { | ||||
|     MESSAGE="${UI_BACKUP_INTEGRITY}" | ||||
|     echo_stat | ||||
|      | ||||
|     sleep $BACKUP_INTEGRITY_WAIT | ||||
|     secondaryIntegrity=$(sqlite3 ${LOCAL_FOLDR}/${BACKUP_FOLD}/${BACKUPTIMESTAMP}-${GRAVITY_FI}.backup 'PRAGMA integrity_check;' | sed 's/\s.*$//') | ||||
|     error_validate | ||||
|      | ||||
| @ -102,6 +104,7 @@ function backup_remote_gravity_integrity() { | ||||
|     MESSAGE="${UI_BACKUP_INTEGRITY}" | ||||
|     echo_stat | ||||
|      | ||||
|     sleep $BACKUP_INTEGRITY_WAIT | ||||
|     primaryIntegrity=$(${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} "sqlite3 ${RIHOLE_DIR}/${GRAVITY_FI}.backup 'PRAGMA integrity_check;'" | sed 's/\s.*$//') | ||||
|     error_validate | ||||
|      | ||||
| @ -149,6 +152,19 @@ function backup_cleanup() { | ||||
|     MESSAGE="${UI_BACKUP_PURGE}" | ||||
|     echo_stat | ||||
| 
 | ||||
|     rm -f ${LOCAL_FOLDR}/${BACKUP_FOLD}/*.pull | ||||
|     rm -f ${LOCAL_FOLDR}/${BACKUP_FOLD}/*.push | ||||
|      | ||||
|     if [ "${TASKTYPE}" != "BACKUP" ] | ||||
|     then | ||||
|         if [ "${BACKUP_RETAIN}" == '0' ] | ||||
|         then | ||||
|             rm -f ${LOCAL_FOLDR}/${BACKUP_FOLD}/*.backup | ||||
|             error_validate | ||||
| 
 | ||||
|             MESSAGE="${UI_BACKUP_DELETE_ALL}" | ||||
|             echo_info | ||||
|         else | ||||
|             find ${LOCAL_FOLDR}/${BACKUP_FOLD}/ -name "*.backup*" -mtime +${BACKUP_RETAIN} -type f -delete | ||||
|             error_validate | ||||
| 
 | ||||
| @ -156,4 +172,6 @@ function backup_cleanup() { | ||||
|      | ||||
|             MESSAGE="${BACKUP_RETAIN} ${UI_BACKUP_REMAIN} (${BACKUP_FOLDER_SIZE})" | ||||
|             echo_info | ||||
|         fi | ||||
|     fi | ||||
| } | ||||
| @ -7,12 +7,13 @@ | ||||
| ## No Changes Made | ||||
| function exit_nochange { | ||||
|     SCRIPT_END=$SECONDS | ||||
|     let SCRIPT_RUN=SCRIPT_END-SCRIPT_START | ||||
|      | ||||
|     if [ "${TASKTYPE}" == "" ] | ||||
|     then | ||||
|         MESSAGE="${PROGRAM} ${UI_EXIT_ABORT} ${UI_EXIT_CALC_END}" | ||||
|         MESSAGE="${PROGRAM} ${UI_EXIT_ABORT} ${UI_EXIT_CALC_END} ${SCRIPT_RUN} ${UI_EXIT_CALC_TIMER}" | ||||
|     else | ||||
|         MESSAGE="${PROGRAM} ${TASKTYPE} ${UI_EXIT_ABORT} ${UI_EXIT_CALC_END}" | ||||
|         MESSAGE="${PROGRAM} ${TASKTYPE} ${UI_EXIT_ABORT} ${UI_EXIT_CALC_END} ${SCRIPT_RUN} ${UI_EXIT_CALC_TIMER}" | ||||
|     fi | ||||
|      | ||||
|     echo_grav | ||||
| @ -22,12 +23,13 @@ function exit_nochange { | ||||
| ## Changes Made | ||||
| function exit_withchange { | ||||
|     SCRIPT_END=$SECONDS | ||||
|     let SCRIPT_RUN=SCRIPT_END-SCRIPT_START | ||||
|      | ||||
|     if [ "${TASKTYPE}" == "" ] | ||||
|     then | ||||
|         MESSAGE="${PROGRAM} ${UI_EXIT_COMPLETE} ${UI_EXIT_CALC_END}" | ||||
|         MESSAGE="${PROGRAM} ${UI_EXIT_COMPLETE} ${UI_EXIT_CALC_END} ${SCRIPT_RUN} ${UI_EXIT_CALC_TIMER}" | ||||
|     else | ||||
|         MESSAGE="${PROGRAM} ${TASKTYPE} ${UI_EXIT_COMPLETE} ${UI_EXIT_CALC_END}" | ||||
|         MESSAGE="${PROGRAM} ${TASKTYPE} ${UI_EXIT_COMPLETE} ${UI_EXIT_CALC_END} ${SCRIPT_RUN} ${UI_EXIT_CALC_TIMER}" | ||||
|     fi | ||||
|      | ||||
|     echo_grav | ||||
|  | ||||
| @ -158,12 +158,12 @@ function md5_recheck { | ||||
|     MESSAGE="${UI_HASHING_REHASHING} ${UI_GRAVITY_NAME}" | ||||
|     echo_stat | ||||
|     primaryDBMD5=$(${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} "md5sum ${RIHOLE_DIR}/${GRAVITY_FI}" | sed 's/\s.*$//') | ||||
|     silent_error_validate | ||||
|     error_validate | ||||
|      | ||||
|     MESSAGE="${UI_HASHING_RECOMPARING} ${UI_GRAVITY_NAME}" | ||||
|     echo_stat | ||||
|     secondDBMD5=$(md5sum ${PIHOLE_DIR}/${GRAVITY_FI} | sed 's/\s.*$//') | ||||
|     silent_error_validate | ||||
|     error_validate | ||||
|      | ||||
|     if [ "$SKIP_CUSTOM" != '1' ] | ||||
|     then | ||||
| @ -176,12 +176,12 @@ function md5_recheck { | ||||
|                 echo_stat | ||||
|                  | ||||
|                 primaryCLMD5=$(${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} "md5sum ${RIHOLE_DIR}/${CUSTOM_DNS} | sed 's/\s.*$//'") | ||||
|                 silent_error_validate | ||||
|                 error_validate | ||||
|                  | ||||
|                 MESSAGE="${UI_HASHING_RECOMPARING} ${UI_CUSTOM_NAME}" | ||||
|                 echo_stat | ||||
|                 secondCLMD5=$(md5sum ${PIHOLE_DIR}/${CUSTOM_DNS} | sed 's/\s.*$//') | ||||
|                 silent_error_validate | ||||
|                 error_validate | ||||
|             else | ||||
|                 MESSAGE="${UI_CUSTOM_NAME} ${UI_HASHING_NOTDETECTED} ${UI_HASHING_PRIMARY}" | ||||
|                 echo_info | ||||
| @ -211,12 +211,12 @@ function md5_recheck { | ||||
|                     echo_stat | ||||
|                      | ||||
|                     primaryCNMD5=$(${SSHPASSWORD} ${SSH_CMD} -p ${SSH_PORT} -i "$HOME/${SSH_PKIF}" ${REMOTE_USER}@${REMOTE_HOST} "md5sum ${RNSMAQ_DIR}/${CNAME_CONF} | sed 's/\s.*$//'") | ||||
|                     silent_error_validate | ||||
|                     error_validate | ||||
|                      | ||||
|                     MESSAGE="${UI_HASHING_RECOMPARING} ${UI_CNAME_NAME}" | ||||
|                     echo_stat | ||||
|                     secondCNMD5=$(md5sum ${DNSMAQ_DIR}/${CNAME_CONF} | sed 's/\s.*$//') | ||||
|                     silent_error_validate | ||||
|                     error_validate | ||||
|                 else | ||||
|                     MESSAGE="${UI_CNAME_NAME} ${UI_HASHING_NOTDETECTED} ${UI_HASHING_PRIMARY}" | ||||
|                     echo_info | ||||
|  | ||||
| @ -41,7 +41,7 @@ function detect_sshkeygen { | ||||
|      | ||||
|     if hash ssh-keygen >/dev/null 2>&1 | ||||
|     then | ||||
|         echo_sameline | ||||
|         echo_good | ||||
|     else | ||||
|         echo_fail | ||||
|         MESSAGE="SSH-KEYGEN is required on $HOSTNAME" | ||||
| @ -99,7 +99,7 @@ function detect_ssh { | ||||
|     if hash ssh 2>/dev/null | ||||
|     then | ||||
|         MESSAGE="${MESSAGE} (OpenSSH)" | ||||
|         echo_sameline | ||||
|         echo_good | ||||
|         SSH_CMD='ssh' | ||||
|     elif hash dbclient 2>/dev/null | ||||
|     then | ||||
| @ -127,7 +127,7 @@ function detect_ssh { | ||||
|      | ||||
|     if hash rsync 2>/dev/null | ||||
|     then | ||||
|         echo_sameline | ||||
|         echo_good | ||||
|     else | ||||
|         echo_fail | ||||
|          | ||||
|  | ||||
| @ -19,9 +19,10 @@ UI_CORE_INIT="Initalizing ${PROGRAM} (${VERSION})" | ||||
| UI_CORE_RELOCATING='Relocating' | ||||
| 
 | ||||
| # Exit | ||||
| UI_EXIT_CALC_END="after $((SCRIPT_END-SCRIPT_START)) seconds" | ||||
| UI_EXIT_CALC_END='after' | ||||
| UI_EXIT_ABORT='aborted' | ||||
| UI_EXIT_COMPLETE='completed' | ||||
| UI_EXIT_CALC_TIMER='seconds' | ||||
| 
 | ||||
| # Hashing | ||||
| UI_HASHING_HASHING='Hashing the primary' | ||||
| @ -84,6 +85,7 @@ UI_BACKUP_REMAIN='days of backups remain' | ||||
| UI_BACKUP_INTEGRITY="Checking ${UI_GRAVITY_NAME} backup integrity" | ||||
| UI_BACKUP_INTEGRITY_FAILED='Integrity check has failed for the primary' | ||||
| UI_BACKUP_INTEGRITY_DELETE='Removing failed backup' | ||||
| UI_BACKUP_DELETE_ALL='All backup files purged' | ||||
| 
 | ||||
| # Restore | ||||
| UI_RESTORE_WARNING="This will overwrite your current Pi-hole settings on $HOSTNAME with a previous version!" | ||||
|  | ||||
| @ -127,6 +127,7 @@ function show_info() { | ||||
|     echo -e "Local Pi-hole Type: ${PH_IN_TYPE}" | ||||
|     echo -e "Local Pi-hole Config Directory: ${PIHOLE_DIR}" | ||||
|     echo -e "Local DNSMASQ Config Directory: ${DNSMAQ_DIR}" | ||||
|     echo -e "Local Gravity Sync Directory: ${LOCAL_FOLDR}"  | ||||
|      | ||||
|     if [ "${PH_IN_TYPE}" == "default" ] | ||||
|     then | ||||
| @ -193,6 +194,9 @@ function show_info() { | ||||
|         echo -e "Backup Retention: ${BACKUP_RETAIN} days (custom)" | ||||
|     fi | ||||
| 
 | ||||
|     BACKUP_FOLDER_SIZE=$(du -h ${LOCAL_FOLDR}/${BACKUP_FOLD}  | sed 's/\s.*$//') | ||||
|     echo -e "Backup Folder Size: ${BACKUP_FOLDER_SIZE}" | ||||
|          | ||||
|     echo -e "" | ||||
|     echo -e "${YELLOW}Remote/Primary Instance Settings${NC}" | ||||
|     echo -e "Remote Hostname/IP: ${REMOTE_HOST}" | ||||
|  | ||||
| @ -16,7 +16,7 @@ function validate_gs_folders { | ||||
|         exit_nochange | ||||
|     fi | ||||
|      | ||||
|     echo_sameline | ||||
|     echo_good | ||||
| } | ||||
| 
 | ||||
| ## Validate Pi-hole Folders | ||||
| @ -59,7 +59,7 @@ function validate_ph_folders { | ||||
|         exit_nochange | ||||
|     fi | ||||
|      | ||||
|     echo_sameline | ||||
|     echo_good | ||||
| } | ||||
| 
 | ||||
| ## Validate DNSMASQ Folders | ||||
| @ -73,7 +73,7 @@ function validate_dns_folders { | ||||
|         echo_fail | ||||
|         exit_nochange | ||||
|     fi | ||||
|     echo_sameline | ||||
|     echo_good | ||||
| } | ||||
| 
 | ||||
| ## Validate SQLite3 | ||||
| @ -83,7 +83,7 @@ function validate_sqlite3 { | ||||
|     if hash sqlite3 2>/dev/null | ||||
|     then | ||||
|         # MESSAGE="SQLITE3 Utility Detected" | ||||
|         echo_sameline | ||||
|         echo_good | ||||
|     else | ||||
|         MESSAGE="${UI_VALIDATING_FAIL_BINARY} ${UI_CORE_APP_SQL}" | ||||
|         echo_warn | ||||
|  | ||||
| @ -45,6 +45,7 @@ REMOTE_USER='pi' | ||||
| ### Backup Customization | ||||
| # BACKUP_RETAIN=''			# replace in gravity-sync.conf to overwrite | ||||
| # BACKUP_TIMEOUT=''			# replace in gravity-sync.conf to overwrite | ||||
| # BACKUP_INTEGRITY_WAIT=''  # time to wait after backup for integrity check | ||||
| 
 | ||||
| ### SSH Customization | ||||
| # SSH_PORT='' 				# default SSH port | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user