mirror of
https://github.com/Llewellynvdm/Backup-System.git
synced 2024-06-08 12:20:48 +00:00
Added Dropbox support, and the option to zip the website backup
This commit is contained in:
parent
0bcf85a890
commit
8e59f87023
|
@ -72,8 +72,8 @@ With your cron time, add the following line to the crontab, using your path deta
|
||||||
|
|
||||||
**Debian & Ubuntu Linux:**
|
**Debian & Ubuntu Linux:**
|
||||||
```bash
|
```bash
|
||||||
sudo apt-get install bash (Probably BASH is already installed on your system)
|
$ sudo apt-get install bash (Probably BASH is already installed on your system)
|
||||||
sudo apt-get install git
|
$ sudo apt-get install git
|
||||||
```
|
```
|
||||||
|
|
||||||
# Copyright:
|
# Copyright:
|
||||||
|
|
15
config.txt
15
config.txt
|
@ -8,10 +8,21 @@
|
||||||
#### just update these to point to your server ###
|
#### just update these to point to your server ###
|
||||||
##############################################################
|
##############################################################
|
||||||
|
|
||||||
|
## BACKUP TYPE (1 = REMOTE SERVER || 2 = DROPBOX)
|
||||||
|
BACKUPTYPE=1
|
||||||
|
|
||||||
|
## REMOTE SERVER DETAILS (1)
|
||||||
REMOTESSH="user@yourserver.com"
|
REMOTESSH="user@yourserver.com"
|
||||||
|
|
||||||
|
## DROPBOX DETAILS (2) (get it from https://github.com/andreafabrizi/Dropbox-Uploader)
|
||||||
|
DROPBOX="/home/path/to/Dropbox-Uploader/dropbox_uploader.sh"
|
||||||
|
|
||||||
|
# PATH DETAILS
|
||||||
REMOTEDBPATH="your_db_path/"
|
REMOTEDBPATH="your_db_path/"
|
||||||
REMOTEWEBPATH="your_website_pat/"
|
REMOTEWEBPATH="your_website_path/"
|
||||||
|
|
||||||
|
## WEBSITE BACKUP TYPE (1 = PER/FILE || 2 = ZIPPED)
|
||||||
|
WEBBACKUPTYPE=1
|
||||||
|
|
||||||
## 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=0
|
||||||
|
|
||||||
|
|
38
incl.sh
38
incl.sh
|
@ -54,7 +54,7 @@ function zipDB {
|
||||||
# the user password
|
# the user password
|
||||||
PASS="$5"
|
PASS="$5"
|
||||||
# use this command for a database server on localhost. add other options if need be.
|
# use this command for a database server on localhost. add other options if need be.
|
||||||
mysqldump --opt --user=${USER} --password=${PASS} ${DATABASE} > ${FILE}
|
mysqldump --opt -q --user=${USER} --password=${PASS} ${DATABASE} > ${FILE}
|
||||||
# gzip the mysql database dump file
|
# gzip the mysql database dump file
|
||||||
gzip $FILE
|
gzip $FILE
|
||||||
# return file name
|
# return file name
|
||||||
|
@ -67,7 +67,11 @@ function moveDB () {
|
||||||
# file name
|
# file name
|
||||||
FILE="$1"
|
FILE="$1"
|
||||||
# move file
|
# move file
|
||||||
scp "$FILE" "$REMOTESSH:${REMOTEDBPATH}${FILE}"
|
if [ "$BACKUPTYPE" -eq "2" ]; then
|
||||||
|
$DROPBOX -q upload "$FILE" "${REMOTEDBPATH}${FILE}"
|
||||||
|
else
|
||||||
|
scp "$FILE" "$REMOTESSH:${REMOTEDBPATH}${FILE}"
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function moveWEB () {
|
function moveWEB () {
|
||||||
|
@ -75,8 +79,36 @@ function moveWEB () {
|
||||||
localFolder="$1"
|
localFolder="$1"
|
||||||
# remote folder name
|
# remote folder name
|
||||||
remoteFolder="$2"
|
remoteFolder="$2"
|
||||||
|
# check if we should instead zip
|
||||||
|
if [ "$WEBBACKUPTYPE" -eq "2" ]; then
|
||||||
|
# set the file name
|
||||||
|
if [ "$USEDATE" -eq "4" ]; then
|
||||||
|
FILE=`date +"%Y-%m-%d:%H:%M:%S"`"_$2.zip"
|
||||||
|
elif [ "$USEDATE" -eq "3" ]; then
|
||||||
|
FILE=`date +"%Y-%m-%d"`"_$2.zip"
|
||||||
|
elif [ "$USEDATE" -eq "2" ]; then
|
||||||
|
FILE=`date +"%Y-%m"`"_$2.zip"
|
||||||
|
elif [ "$USEDATE" -eq "1" ]; then
|
||||||
|
FILE=`date +"%Y"`"_$2.zip"
|
||||||
|
else
|
||||||
|
FILE="$2.zip"
|
||||||
|
fi
|
||||||
|
# zip the website
|
||||||
|
zip -r -q "${localFolder}${FILE}" "${localFolder}"
|
||||||
|
# set the paths
|
||||||
|
PaTh="${localFolder}${FILE}"
|
||||||
|
remotePaTh="${REMOTEWEBPATH}${FILE}"
|
||||||
|
else
|
||||||
|
# set the paths
|
||||||
|
PaTh="${localFolder}"
|
||||||
|
remotePaTh="${REMOTEWEBPATH}${remoteFolder}"
|
||||||
|
fi
|
||||||
# move all file & folders
|
# move all file & folders
|
||||||
rsync -ax "${localFolder}" "$REMOTESSH:${REMOTEWEBPATH}${remoteFolder}"
|
if [ "$BACKUPTYPE" -eq "2" ]; then
|
||||||
|
$DROPBOX -q upload "${PaTh}" "${remotePaTh}"
|
||||||
|
else
|
||||||
|
rsync -ax "${PaTh}" "$REMOTESSH:${remotePaTh}"
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function remoteHouseCleaning () {
|
function remoteHouseCleaning () {
|
||||||
|
|
11
main.sh
11
main.sh
|
@ -10,7 +10,7 @@
|
||||||
# |_|
|
# |_|
|
||||||
#/-------------------------------------------------------------------------------------------------------------------------------/
|
#/-------------------------------------------------------------------------------------------------------------------------------/
|
||||||
#
|
#
|
||||||
# @version 1.0.0
|
# @version 1.0.0
|
||||||
# @build 9th May, 2017
|
# @build 9th May, 2017
|
||||||
# @package Backup System
|
# @package Backup System
|
||||||
# @author Llewellyn van der Merwe <https://github.com/Llewellynvdm>
|
# @author Llewellyn van der Merwe <https://github.com/Llewellynvdm>
|
||||||
|
@ -44,11 +44,14 @@ function backupDB () {
|
||||||
# start fresh
|
# start fresh
|
||||||
cd "$USERHOME"
|
cd "$USERHOME"
|
||||||
# GO To remote server and do house cleaning
|
# GO To remote server and do house cleaning
|
||||||
ssh -tt -p '22' "$REMOTESSH" "$(typeset -f); remoteHouseCleaning $REMOTEDBPATH"
|
if [ "$BACKUPTYPE" -eq "1" ]; then
|
||||||
|
ssh -tt -p '22' "$REMOTESSH" "$(typeset -f); remoteHouseCleaning $REMOTEDBPATH"
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# function to backup all WEB folders
|
# function to backup all WEB folders
|
||||||
function backupWEB () {
|
function backupWEB () {
|
||||||
|
# GO To remote server and do house cleaning
|
||||||
while IFS=$'\t' read -r -a foalder
|
while IFS=$'\t' read -r -a foalder
|
||||||
do
|
do
|
||||||
[[ "$foalder" =~ ^#.*$ ]] && continue
|
[[ "$foalder" =~ ^#.*$ ]] && continue
|
||||||
|
@ -60,7 +63,9 @@ function backupWEB () {
|
||||||
# start fresh
|
# start fresh
|
||||||
cd "$USERHOME"
|
cd "$USERHOME"
|
||||||
# GO To remote server and do house cleaning
|
# GO To remote server and do house cleaning
|
||||||
ssh -tt -p '22' "$REMOTESSH" "$(typeset -f); remoteHouseCleaning $REMOTEWEBPATH"
|
if [ "$BACKUPTYPE" -eq "1" ]; then
|
||||||
|
ssh -tt -p '22' "$REMOTESSH" "$(typeset -f); remoteHouseCleaning $REMOTEWEBPATH"
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# run the main only at the end!
|
# run the main only at the end!
|
||||||
|
|
72
setup.sh
Normal file
72
setup.sh
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
#!/bin/bash
|
||||||
|
#/--------------------------------------------------------------------------------------------------------| www.vdm.io |------/
|
||||||
|
# __ __ _ _____ _ _ __ __ _ _ _
|
||||||
|
# \ \ / / | | | __ \ | | | | | \/ | | | | | | |
|
||||||
|
# \ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| |
|
||||||
|
# \ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` |
|
||||||
|
# \ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| |
|
||||||
|
# \/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_|
|
||||||
|
# | |
|
||||||
|
# |_|
|
||||||
|
#/-------------------------------------------------------------------------------------------------------------------------------/
|
||||||
|
#
|
||||||
|
# @version 1.0.0
|
||||||
|
# @build 9th May, 2017
|
||||||
|
# @package Backup System
|
||||||
|
# @author Llewellyn van der Merwe <https://github.com/Llewellynvdm>
|
||||||
|
# @copyright Copyright (C) 2015. All Rights Reserved
|
||||||
|
# @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
|
||||||
|
#
|
||||||
|
#/-----------------------------------------------------------------------------------------------------------------------------/
|
||||||
|
|
||||||
|
### MAIN ###
|
||||||
|
function main () {
|
||||||
|
# backup the databases now
|
||||||
|
backupDB &
|
||||||
|
# backup the websites now
|
||||||
|
backupWEB
|
||||||
|
}
|
||||||
|
|
||||||
|
# function to backup all DB's
|
||||||
|
function backupDB () {
|
||||||
|
while IFS=$'\t' read -r -a database
|
||||||
|
do
|
||||||
|
[[ "$database" =~ ^#.*$ ]] && continue
|
||||||
|
# zip the database
|
||||||
|
DBFILE=$(zipDB "${database[0]}" "${database[1]}" "${database[2]}" "${database[3]}" "${database[4]}")
|
||||||
|
# move to backup server
|
||||||
|
moveDB "$DBFILE"
|
||||||
|
done < $databaseBuilder
|
||||||
|
|
||||||
|
# now remove the local file
|
||||||
|
rmTmpFolder "$tmpFolder"
|
||||||
|
|
||||||
|
# start fresh
|
||||||
|
cd "$USERHOME"
|
||||||
|
# GO To remote server and do house cleaning
|
||||||
|
if [ "$BACKUPTYPE" -eq "1" ]; then
|
||||||
|
ssh -tt -p '22' "$REMOTESSH" "$(typeset -f); remoteHouseCleaning $REMOTEDBPATH"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# function to backup all WEB folders
|
||||||
|
function backupWEB () {
|
||||||
|
# GO To remote server and do house cleaning
|
||||||
|
while IFS=$'\t' read -r -a foalder
|
||||||
|
do
|
||||||
|
[[ "$foalder" =~ ^#.*$ ]] && continue
|
||||||
|
# move the local folder & files to remote
|
||||||
|
moveWEB "${foalder[0]}" "${foalder[1]}"
|
||||||
|
|
||||||
|
done < $folderBuilder
|
||||||
|
|
||||||
|
# start fresh
|
||||||
|
cd "$USERHOME"
|
||||||
|
# GO To remote server and do house cleaning
|
||||||
|
if [ "$BACKUPTYPE" -eq "1" ]; then
|
||||||
|
ssh -tt -p '22' "$REMOTESSH" "$(typeset -f); remoteHouseCleaning $REMOTEWEBPATH"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# run the main only at the end!
|
||||||
|
main
|
Loading…
Reference in New Issue
Block a user