118 lines
2.5 KiB
Bash
118 lines
2.5 KiB
Bash
|
#!/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
|
||
|
backupdir="$(pwd)/backups"
|
||
|
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[32mBackup Filename: \e[0m'$filename'
|
||
|
\e[32mCurrent Backup Location: \e[0m'$backupdir'
|
||
|
\e[32mDirectories to Backup: \e[0m'/var/www', '$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[0mCheck /tmp for any rogue backups.
|
||
|
\e[34m[4] \e[0mChange backup directory.
|
||
|
\e[34m[5] \e[0mGenerate 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 -czf "/tmp/$filename" /var/www $HOME
|
||
|
mv "$filename" "$backupdir"
|
||
|
;;
|
||
|
2)
|
||
|
# List saved backups
|
||
|
clear
|
||
|
ls -al "$backupdir" | grep "backup"
|
||
|
;;
|
||
|
3)
|
||
|
# Check /tmp for any rogue backups.
|
||
|
clear
|
||
|
ls -al /tmp | grep backup
|
||
|
;;
|
||
|
4)
|
||
|
# Change backup directory
|
||
|
read -p " New directory: " newdir
|
||
|
backupdir=$newdir
|
||
|
;;
|
||
|
0)
|
||
|
# Exit the script
|
||
|
echo "!! Quitting !!"
|
||
|
sleep 0.4s
|
||
|
clear
|
||
|
exit
|
||
|
;;
|
||
|
*)
|
||
|
clear
|
||
|
echo "!! Invalid Option !!"
|
||
|
;;
|
||
|
esac
|
||
|
|
||
|
exec ./backup.sh
|