mirror of
				https://github.com/dustinbrun/openwebrx_docker_installation.git
				synced 2025-11-03 23:07:31 +01:00 
			
		
		
		
	added backup script
This commit is contained in:
		
							
								
								
									
										121
									
								
								backup_docker.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										121
									
								
								backup_docker.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,121 @@
 | 
				
			|||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					set -euo pipefail
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# === Docker Backup Script ===
 | 
				
			||||||
 | 
					# Creates a compressed backup of a Docker directory (--backup / -b),
 | 
				
			||||||
 | 
					# or deletes backups older than a specified number of days (--clean / -c <days>).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# --- Configuration ---
 | 
				
			||||||
 | 
					DEST="/home/pi/docker_backup"
 | 
				
			||||||
 | 
					SOURCE="/home/pi/docker"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# --- Functions ---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					show_help() {
 | 
				
			||||||
 | 
					  cat <<EOF
 | 
				
			||||||
 | 
					Usage: $(basename "$0") [COMMAND]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Commands (choose one):
 | 
				
			||||||
 | 
					  --backup, -b
 | 
				
			||||||
 | 
					        Create a new compressed backup of the directory: ${SOURCE}
 | 
				
			||||||
 | 
					        Example: $(basename "$0") --backup
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  --clean, -c <days>
 | 
				
			||||||
 | 
					        Delete backups in ${DEST} older than <days>. <days> must be a positive integer.
 | 
				
			||||||
 | 
					        There is NO default age; this parameter is required when using --clean.
 | 
				
			||||||
 | 
					        Example: $(basename "$0") --clean 14
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  --help, -h
 | 
				
			||||||
 | 
					        Show this help message.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Notes:
 | 
				
			||||||
 | 
					- The script must be called with exactly one command (either --backup/-b or --clean/-c <days>).
 | 
				
			||||||
 | 
					- If you provide invalid or missing arguments, the script will exit with an error.
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					is_positive_integer() {
 | 
				
			||||||
 | 
					  [[ "$1" =~ ^[1-9][0-9]*$ ]]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					create_backup() {
 | 
				
			||||||
 | 
					  local current_date file_path
 | 
				
			||||||
 | 
					  current_date=$(date +"%Y%m%d_%H%M%S")
 | 
				
			||||||
 | 
					  file_path="${DEST}/${current_date}_docker.tar.gz"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  echo
 | 
				
			||||||
 | 
					  echo "Starting Docker backup at: ${current_date}"
 | 
				
			||||||
 | 
					  echo "Source: ${SOURCE}"
 | 
				
			||||||
 | 
					  echo "Destination: ${file_path}"
 | 
				
			||||||
 | 
					  echo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  mkdir -p "$DEST"
 | 
				
			||||||
 | 
					  tar -cpzf "$file_path" "$SOURCE" --checkpoint=.1000
 | 
				
			||||||
 | 
					  echo
 | 
				
			||||||
 | 
					  echo "Backup created: ${file_path}"
 | 
				
			||||||
 | 
					  echo
 | 
				
			||||||
 | 
					  echo "Contents of backup directory:"
 | 
				
			||||||
 | 
					  ls -lah "$DEST"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					clean_backups() {
 | 
				
			||||||
 | 
					  local days="$1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if ! is_positive_integer "$days"; then
 | 
				
			||||||
 | 
					    echo "Error: <days> must be a positive integer. Got: '$days'"
 | 
				
			||||||
 | 
					    exit 1
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if [[ ! -d "$DEST" ]]; then
 | 
				
			||||||
 | 
					    echo "Error: backup directory does not exist: $DEST"
 | 
				
			||||||
 | 
					    exit 1
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  echo
 | 
				
			||||||
 | 
					  echo "Deleting backups in '${DEST}' older than ${days} days..."
 | 
				
			||||||
 | 
					  echo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  find "$DEST" -type f -name "*.tar.gz" -mtime +"$days" -print -delete
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  echo
 | 
				
			||||||
 | 
					  echo "Deletion complete."
 | 
				
			||||||
 | 
					  echo
 | 
				
			||||||
 | 
					  echo "Remaining backups:"
 | 
				
			||||||
 | 
					  ls -lah "$DEST" || true
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# --- Main Argument Handling ---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ $# -eq 0 ]]; then
 | 
				
			||||||
 | 
					  echo "Error: no parameters provided."
 | 
				
			||||||
 | 
					  echo "Use --help or -h to see available options."
 | 
				
			||||||
 | 
					  exit 1
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					case "$1" in
 | 
				
			||||||
 | 
					  --help|-h)
 | 
				
			||||||
 | 
					    show_help
 | 
				
			||||||
 | 
					    exit 0
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					  --backup|-b)
 | 
				
			||||||
 | 
					    if [[ $# -ne 1 ]]; then
 | 
				
			||||||
 | 
					      echo "Error: --backup / -b takes no additional arguments."
 | 
				
			||||||
 | 
					      echo "Use --help or -h to see usage."
 | 
				
			||||||
 | 
					      exit 1
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    create_backup
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					  --clean|-c)
 | 
				
			||||||
 | 
					    if [[ $# -ne 2 ]]; then
 | 
				
			||||||
 | 
					      echo "Error: --clean / -c requires a single <days> argument (no default)."
 | 
				
			||||||
 | 
					      echo "Example: $(basename "$0") --clean 30"
 | 
				
			||||||
 | 
					      exit 1
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    clean_backups "$2"
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					  *)
 | 
				
			||||||
 | 
					    echo "Error: unknown parameter: $1"
 | 
				
			||||||
 | 
					    echo "Use --help or -h to see available options."
 | 
				
			||||||
 | 
					    exit 1
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					esac
 | 
				
			||||||
		Reference in New Issue
	
	Block a user