Started the work of setting the stage for reverting back-up. Also fixed the zip path issue.
This commit is contained in:
parent
11d0e8582a
commit
bcc5bcd5fc
|
@ -1,3 +1,4 @@
|
||||||
databases
|
databases
|
||||||
folders
|
folders
|
||||||
config.sh
|
config.sh
|
||||||
|
dropboxpath
|
||||||
|
|
12
README.md
12
README.md
|
@ -27,7 +27,7 @@ Make sure the run file is executable
|
||||||
$ chmod +x run.sh
|
$ chmod +x run.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
## Automated Option (guided setup option)
|
## Auto Setup Option
|
||||||
|
|
||||||
Just run :)
|
Just run :)
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@ Just run :)
|
||||||
$ ./run.sh
|
$ ./run.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
## Manual Option
|
## Manual Setup Option
|
||||||
|
|
||||||
Copy __config.txt__ to __config.sh__ and update the values in the file.
|
Copy __config.txt__ to __config.sh__ and update the values in the file.
|
||||||
|
|
||||||
|
@ -61,6 +61,14 @@ Run the script
|
||||||
$ ./run.sh
|
$ ./run.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Fetch Backup and Restore
|
||||||
|
|
||||||
|
Either revert to previous backup (restore) or to do a new deployment.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ ./run.sh -r
|
||||||
|
```
|
||||||
|
|
||||||
## Tested Environments
|
## Tested Environments
|
||||||
|
|
||||||
* GNU Linux
|
* GNU Linux
|
||||||
|
|
|
@ -18,11 +18,11 @@ REMOTESSH="user@yourserver.com"
|
||||||
DROPBOX="/home/path/to/Dropbox-Uploader/dropbox_uploader.sh"
|
DROPBOX="/home/path/to/Dropbox-Uploader/dropbox_uploader.sh"
|
||||||
|
|
||||||
# PATH DETAILS
|
# PATH DETAILS
|
||||||
REMOTEDBPATH="your_db_path/"
|
REMOTEDBPATH="db_path/"
|
||||||
REMOTEWEBPATH="your_website_path/"
|
REMOTEWEBPATH="website_path/"
|
||||||
|
|
||||||
## WEBSITE BACKUP TYPE (1 = PER/FILE || 2 = ZIPPED)
|
## WEBSITE BACKUP TYPE (1 = PER/FILE || 2 = ZIPPED)
|
||||||
WEBBACKUPTYPE=1
|
WEBBACKUPTYPE=2
|
||||||
|
|
||||||
## 0 = no date | 1 = year | 2 = year-month | 3 = your-month-day | 4 = your-month-day:time # For DB file name
|
## 0 = no date | 1 = year | 2 = year-month | 3 = your-month-day | 4 = your-month-day:time # For DB file name
|
||||||
USEDATE=0
|
USEDATE=1
|
||||||
|
|
6
incl.sh
6
incl.sh
|
@ -101,8 +101,12 @@ function moveWEB () {
|
||||||
else
|
else
|
||||||
FILE="$2.zip"
|
FILE="$2.zip"
|
||||||
fi
|
fi
|
||||||
|
# go to local folder
|
||||||
|
cd "${localFolder}"
|
||||||
# zip the website
|
# zip the website
|
||||||
zip -r -q "${FILE}" "${localFolder}"
|
zip -r -q "${tmpFolder}/${FILE}" *
|
||||||
|
# we move to tmp folder
|
||||||
|
cd "$tmpFolder"
|
||||||
# set the paths
|
# set the paths
|
||||||
PaTh="${FILE}"
|
PaTh="${FILE}"
|
||||||
remotePaTh="${REMOTEWEBPATH}${FILE}"
|
remotePaTh="${REMOTEWEBPATH}${FILE}"
|
||||||
|
|
43
main.sh
43
main.sh
|
@ -33,10 +33,20 @@ MOVEWEBWHAT='None'
|
||||||
|
|
||||||
### MAIN ###
|
### MAIN ###
|
||||||
function main () {
|
function main () {
|
||||||
# backup the databases now
|
# do backup
|
||||||
backupDB
|
if [ "$REVERT" -ne 1 ]; then
|
||||||
# backup the websites now
|
# backup the databases now
|
||||||
backupWEB
|
backupDB
|
||||||
|
# backup the websites now
|
||||||
|
backupWEB
|
||||||
|
else
|
||||||
|
# revert the databases now
|
||||||
|
revertDB
|
||||||
|
# revert the websites now
|
||||||
|
revertWEB
|
||||||
|
# force remove tmp
|
||||||
|
rmTmp 4
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function rmTmp () {
|
function rmTmp () {
|
||||||
|
@ -47,10 +57,13 @@ function rmTmp () {
|
||||||
elif [ "$1" -eq "2" ]; then
|
elif [ "$1" -eq "2" ]; then
|
||||||
#confirm we are done
|
#confirm we are done
|
||||||
BACKUPWEBDONE=1
|
BACKUPWEBDONE=1
|
||||||
|
elif [ "$1" -eq "4" ]; then
|
||||||
|
# now force remove tmp
|
||||||
|
rmFolder "$tmpFolder"
|
||||||
fi
|
fi
|
||||||
# only if both are done
|
# only if both are done
|
||||||
if [ "$BACKUPWEBDONE" -eq "1" ] && [ "$BACKUPDBDONE" -eq "1" ]; then
|
if [ "$BACKUPWEBDONE" -eq "1" ] && [ "$BACKUPDBDONE" -eq "1" ]; then
|
||||||
# now remove the local file
|
# now remove tmp
|
||||||
rmFolder "$tmpFolder"
|
rmFolder "$tmpFolder"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
@ -100,6 +113,26 @@ function backupWEB () {
|
||||||
rmTmp 2
|
rmTmp 2
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# function to revert DB's
|
||||||
|
function revertDB () {
|
||||||
|
while IFS=$'\t' read -r -a database
|
||||||
|
do
|
||||||
|
[[ "$database" =~ ^#.*$ ]] && continue
|
||||||
|
# the local database details
|
||||||
|
# echo "${database[0]}" "${database[1]}" "${database[2]}" "${database[3]}" "${database[4]}"
|
||||||
|
done < $databaseBuilder
|
||||||
|
}
|
||||||
|
|
||||||
|
# function to revert WEB folders
|
||||||
|
function revertWEB () {
|
||||||
|
while IFS=$'\t' read -r -a foalder
|
||||||
|
do
|
||||||
|
[[ "$foalder" =~ ^#.*$ ]] && continue
|
||||||
|
# the local folder & remote file name
|
||||||
|
# echo "${foalder[0]}" "${foalder[1]}"
|
||||||
|
done < $folderBuilder
|
||||||
|
}
|
||||||
|
|
||||||
# run the main only at the end!
|
# run the main only at the end!
|
||||||
main
|
main
|
||||||
|
|
||||||
|
|
15
run.sh
15
run.sh
|
@ -21,6 +21,8 @@
|
||||||
|
|
||||||
# user home dir
|
# user home dir
|
||||||
USERHOME=~/
|
USERHOME=~/
|
||||||
|
# switch to revert
|
||||||
|
REVERT=0
|
||||||
# get script path
|
# get script path
|
||||||
DIR="${BASH_SOURCE%/*}"
|
DIR="${BASH_SOURCE%/*}"
|
||||||
if [[ ! -d "$DIR" || "$DIR" == '.' ]]; then DIR="$PWD"; fi
|
if [[ ! -d "$DIR" || "$DIR" == '.' ]]; then DIR="$PWD"; fi
|
||||||
|
@ -54,7 +56,7 @@ tmpFolder="${USERHOME}T3MPR3P0_${newFolder}"
|
||||||
# create tmp folder
|
# create tmp folder
|
||||||
if [ ! -d "$tmpFolder" ]
|
if [ ! -d "$tmpFolder" ]
|
||||||
then
|
then
|
||||||
mkdir -p "$tmpFolder"
|
mkdir -p "$tmpFolder"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# DB file
|
# DB file
|
||||||
|
@ -78,5 +80,16 @@ fi
|
||||||
# we move to user folder
|
# we move to user folder
|
||||||
cd "$USERHOME"
|
cd "$USERHOME"
|
||||||
|
|
||||||
|
#Look for optional config parameter
|
||||||
|
while getopts ":r" opt; do
|
||||||
|
case $opt in
|
||||||
|
|
||||||
|
r)
|
||||||
|
REVERT=1
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
# run main
|
# run main
|
||||||
. "$BASEDIR/main.sh"
|
. "$BASEDIR/main.sh"
|
||||||
|
|
55
setup.sh
55
setup.sh
|
@ -23,17 +23,35 @@
|
||||||
function runSetupConfig () {
|
function runSetupConfig () {
|
||||||
# get backup type
|
# get backup type
|
||||||
echo -ne "\n Select Backup Type\n"
|
echo -ne "\n Select Backup Type\n"
|
||||||
echo -ne " 1 = Remote Server\n"
|
echo -ne " 1 = Remote Server (default)\n"
|
||||||
echo -ne " 2 = Dropbox\n"
|
echo -ne " 2 = Dropbox\n"
|
||||||
echo -ne " # Make your selection [1/2]: "
|
echo -ne " # Make your selection [1/2]: "
|
||||||
read -r INPUT_BACKUPTYPE
|
read -r INPUT_BACKUPTYPE
|
||||||
|
# set default
|
||||||
|
INPUT_BACKUPTYPE=${INPUT_BACKUPTYPE:-1}
|
||||||
# get the details for the backup type
|
# get the details for the backup type
|
||||||
if [ "$INPUT_BACKUPTYPE" -eq "2" ]; then
|
if [ "$INPUT_BACKUPTYPE" -eq "2" ]; then
|
||||||
# get dropbox uploader path
|
# check if another should be added
|
||||||
echo -ne "\n Set the Path to the Dropbox Uploader File\n"
|
echo -ne "\n Do you have the path to the Dropbox Uploader File? [y/N]: "
|
||||||
echo -ne " Use https://github.com/andreafabrizi/Dropbox-Uploader\n"
|
read -r answer
|
||||||
echo -ne " # Example (/home/path/to/Dropbox-Uploader/dropbox_uploader.sh): "
|
if [[ $answer != "y" ]]; then
|
||||||
read -r INPUT_DROPBOX
|
echo -ne "\n YOU MUST GET THE PATH TO THE DROPBOX UPLOADER FILE!\n" ;
|
||||||
|
echo -ne " For more help https://github.com/andreafabrizi/Dropbox-Uploader\n"
|
||||||
|
# start again
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
# get dropbox uploader path
|
||||||
|
echo -ne "\n Set the Path to the Dropbox Uploader File\n"
|
||||||
|
echo -ne " # Example (/home/path/to/Dropbox-Uploader/dropbox_uploader.sh): "
|
||||||
|
read -r INPUT_DROPBOX
|
||||||
|
# check that we have a string
|
||||||
|
if [ ! ${#INPUT_DROPBOX} -ge 2 ]; then
|
||||||
|
echo -ne "\n YOU MUST GET THE PATH TO THE DROPBOX UPLOADER FILE!\n" ;
|
||||||
|
echo -ne " For more help https://github.com/andreafabrizi/Dropbox-Uploader\n"
|
||||||
|
# start again
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
# set default remote server details
|
# set default remote server details
|
||||||
INPUT_REMOTESSH="user@yourserver.com"
|
INPUT_REMOTESSH="user@yourserver.com"
|
||||||
else
|
else
|
||||||
|
@ -41,32 +59,47 @@ function runSetupConfig () {
|
||||||
echo -ne "\n Set the Remote Server Details\n"
|
echo -ne "\n Set the Remote Server Details\n"
|
||||||
echo -ne " # Example (user@yourserver.com): "
|
echo -ne " # Example (user@yourserver.com): "
|
||||||
read -r INPUT_REMOTESSH
|
read -r INPUT_REMOTESSH
|
||||||
|
# check that we have a string
|
||||||
|
if [ ! ${#INPUT_REMOTESSH} -ge 2 ]; then
|
||||||
|
echo -ne "\n YOU MUST GIVE THE REMOTE SERVER DETAILS!\n" ;
|
||||||
|
echo -ne " # Example (user@yourserver.com)\n"
|
||||||
|
# start again
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
# set default dropbox details
|
# set default dropbox details
|
||||||
INPUT_DROPBOX="/media/host/root/Dropbox-Uploader/dropbox_uploader.sh"
|
INPUT_DROPBOX="/home/path/to/Dropbox-Uploader/dropbox_uploader.sh"
|
||||||
fi
|
fi
|
||||||
# get the remote database backup paths
|
# get the remote database backup paths
|
||||||
echo -ne "\n Set Remote Backup Path for Database Backups\n"
|
echo -ne "\n Set Remote Backup Path for Database Backups\n"
|
||||||
echo -ne " # Example (your_db_path/): "
|
echo -ne " # Default (db_path/): "
|
||||||
read -r INPUT_REMOTEDBPATH
|
read -r INPUT_REMOTEDBPATH
|
||||||
|
# set default
|
||||||
|
INPUT_REMOTEDBPATH=${INPUT_REMOTEDBPATH:-'db_path/'}
|
||||||
# get the remote website backup paths
|
# get the remote website backup paths
|
||||||
echo -ne "\n Set Remote Backup Path for Website Backups\n"
|
echo -ne "\n Set Remote Backup Path for Website Backups\n"
|
||||||
echo -ne " # Example (your_website_path/): "
|
echo -ne " # Default (website_path/): "
|
||||||
read -r INPUT_REMOTEWEBPATH
|
read -r INPUT_REMOTEWEBPATH
|
||||||
|
# set default
|
||||||
|
INPUT_REMOTEWEBPATH=${INPUT_REMOTEWEBPATH:-'website_path/'}
|
||||||
# select the website backup type
|
# select the website backup type
|
||||||
echo -ne "\n Select the Website Backup Type\n"
|
echo -ne "\n Select the Website Backup Type\n"
|
||||||
echo -ne " 1 = per/file\n"
|
echo -ne " 1 = per/file\n"
|
||||||
echo -ne " 2 = zipped package\n"
|
echo -ne " 2 = zipped package (default)\n"
|
||||||
echo -ne " # Make your selection [1/2]: "
|
echo -ne " # Make your selection [1/2]: "
|
||||||
read -r INPUT_WEBBACKUPTYPE
|
read -r INPUT_WEBBACKUPTYPE
|
||||||
|
# set default
|
||||||
|
INPUT_WEBBACKUPTYPE=${INPUT_WEBBACKUPTYPE:-2}
|
||||||
# select the backup file name convention
|
# select the backup file name convention
|
||||||
echo -ne "\n Select the Backup File Name Convention\n"
|
echo -ne "\n Select the Backup File Name Convention\n"
|
||||||
echo -ne " 0 = add no date\n"
|
echo -ne " 0 = add no date\n"
|
||||||
echo -ne " 1 = add only year\n"
|
echo -ne " 1 = add only year (default)\n"
|
||||||
echo -ne " 2 = add year & month\n"
|
echo -ne " 2 = add year & month\n"
|
||||||
echo -ne " 3 = add year, month & day\n"
|
echo -ne " 3 = add year, month & day\n"
|
||||||
echo -ne " 4 = add year, month, day & time\n"
|
echo -ne " 4 = add year, month, day & time\n"
|
||||||
echo -ne " # Make your selection [1-4]: "
|
echo -ne " # Make your selection [1-4]: "
|
||||||
read -r INPUT_USEDATE
|
read -r INPUT_USEDATE
|
||||||
|
# set default
|
||||||
|
INPUT_USEDATE=${INPUT_USEDATE:-1}
|
||||||
|
|
||||||
# now add it all to the config file
|
# now add it all to the config file
|
||||||
echo "#!/bin/bash" > "$1"
|
echo "#!/bin/bash" > "$1"
|
||||||
|
|
Loading…
Reference in New Issue