-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbackupDb.sh
54 lines (47 loc) · 1.23 KB
/
backupDb.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/bin/bash
# Set Helper Timestamp Variables
TIMESTAMP=$(date +"%F")
#FTP Login Information
HOST="hostip port"
USER="ftp-username"
PASSWD="ftp-password"
#Temporary Backup Path
FOLDER="/root/backup/DB-Backups/$TIMESTAMP"
#Remote Backup Path
REMOTEDIR="/backup/subfolder"
#MySQL Connection & Binary Information
MYSQL_USER="mysql-username"
MYSQL=/usr/bin/mysql
MYSQL_PASSWORD="mysql-password"
MYSQLDUMP=/usr/bin/mysqldump
#DO NOT EDIT BELOW
##############################################
# Make Folder Name Using Current Timestamp
mkdir -p ${FOLDER}
# Change folder to Source Folder
cd $FOLDER
# Get Databases list into array variable.
databases=`$MYSQL --user=$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema)"`
# Loop Start
for db in $databases;
do
FINAMEIND="$db-$TIMESTAMP.gz"
$MYSQLDUMP --force --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --databases $db | gzip > "$FOLDER/$FINAMEIND"
ftp -n -v $HOST << EOT
PASV
user $USER $PASSWD
prompt
lcd $FOLDER
cd $REMOTEDIR
pwd
put $FINAMEIND
bye
EOT
# Remove Uploaded Backup File Individually
rm "$FOLDER/$FINAMEIND"
done
# Loop End
# Remove Temporary Backup Folder
rm -rf $FOLDER
##############################################
#DO NOT EDIT ABOVE