#!/bin/bash # Interactive backup script written by Skylar Grant # # GitHub: https://github.com/voidf1sh/backup-script # File: backup.sh # Version: 0.0.1 # Date: 2021.09.21 #################################################### #################################################### # Formatting Tips: # (Tips found at : https://misc.flogisoft.com/bash/tip_colors_and_formatting) # # Formatting: # \e[1m - Bold # \e[2m - Dim # \e[8m - Hidden (passwords) # # Reset: # \e[0m - Reset All Attributes # \e[21m - Reset Bold/Bright # \e[22m - Reset Dim # \e[28m - Reset Hidden # # Colors: # \e[39m - Default Foreground Color # \e[30m - Black # \e[31m - Red # \e[32m - Green # \e[34m - Blue #################################################### # Some initial variables to work with # Note: this isn't ideal, this is going to name the # backup according to the time the script is launched # not according to the time the actual backup was initiated if [[ -f "./.dir" ]]; then backupdir=$(cat ./.dir) else backupdir="$(pwd)/backups" fi timestamp=$(date "+%Y%m%d_%H%M") filename="backup_$timestamp.tar.gz" # Initial Prompt # Bash allows for linebreaks in string literals and will # break lines accordingly in the shell echo -e " \e[1m\e[32m[ Skylar's Backup Script ]\e[0m \e[32mThis script is being run from: \e[0m'$(pwd)' \e[32mCurrent Backup Location: \e[0m'$backupdir' \e[32mDirectories to Backup: \e[0m '$HOME' \e[34mPlease enter an option from below:\e[0m \e[34m[1] \e[0mCreate a new backup. \e[34m[2] \e[0mList saved backups. \e[34m[3] \e[0mChange backup directory. \e[34m[4] \e[0mINOPERABLE/Coming Soon - Generate a reusable backup script using these settings. \e[34m[0] \e[31mExit\e[0m " if ! test -d "$backupdir"; then echo -e "\e[31mError: The backup directory does not exist. \e[0mWould you like to create it? [y/n]" read -p "[y/n]: " yesno case "$yesno" in "y") mkdir -p "$backupdir" ;; "n") ;; esac fi # Wait for input read -p " Option: " opt # Execute the correct commands based on input. case "$opt" in 1) # Create new backup clear tar -czvf "/tmp/$filename" $HOME mv "/tmp/$filename" "$backupdir" clear echo "Your backup is complete and can be found at $backupdir/$filename" ;; 2) # List saved backups clear ls -al "$backupdir" | grep "backup" ;; 3) # Change backup directory read -p " New directory: " newdir echo $newdir > ./.dir ;; 0) # Exit the script echo "!! Quitting !!" sleep 0.4s clear exit ;; *) clear echo "!! Invalid Option !!" ;; esac exec ./backup.sh