Last active
June 5, 2024 13:08
-
-
Save Debcharon/a8857d91c33797a3b3e529dd3783b995 to your computer and use it in GitHub Desktop.
Backup website and MySQL database with one script
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
# Function: Backup website and mysql database | |
# Author: licess | |
# Modified by: Microcharon | |
# Website: https://lnmp.org | |
# IMPORTANT!!! Please Setting the following Values! | |
Backup_Home="/home/backup/" | |
MySQL_Dump="/usr/local/mysql/bin/mysqldump" | |
######~Set Directory you want to backup~###### | |
Backup_Dir=("/home/wwwroot/example.com" "/home/wwwroot/test.example.com") | |
######~Set MySQL Database you want to backup~###### | |
Backup_Database=("data", "test") | |
######~Set MySQL UserName and password~###### | |
MYSQL_UserName='root' | |
MYSQL_PassWord='yourrootpassword' | |
######~Enable Rclone Backup~###### | |
Enable_Rclone=1 | |
# 0: enable; 1: disable | |
######~Set Rclone Remote Information~###### | |
Drive_Name='drive_name' | |
Drive_Dir='backup' | |
######~Enable Ftp Backup~###### | |
Enable_FTP=1 | |
# 0: enable; 1: disable | |
######~Set FTP Information~###### | |
FTP_Host='ftp.example.com' | |
FTP_Username='ftp_user' | |
FTP_Password='yourftppassword' | |
FTP_Dir="backup" | |
# Values Setting END! | |
AllWWWBackup=www-*.tar.gz | |
AllDBBackup=db-*.sql | |
TodayWWWBackup=www-*-$(date +"%Y%m%d").tar.gz | |
TodayDBBackup=db-*-$(date +"%Y%m%d").sql | |
Backup_Dir() { | |
Backup_Path=$1 | |
Dir_Name=`echo ${Backup_Path##*/}` | |
Pre_Dir=`echo ${Backup_Path} | sed 's/'${Dir_Name}'//g'` | |
tar zcf ${Backup_Home}www-${Dir_Name}-$(date +"%Y%m%d").tar.gz -C ${Pre_Dir} ${Dir_Name} | |
} | |
Backup_Sql() { | |
${MySQL_Dump} -u$MYSQL_UserName -p$MYSQL_PassWord $1 > ${Backup_Home}db-$1-$(date +"%Y%m%d").sql | |
} | |
if [ ! -f ${MySQL_Dump} ]; then | |
echo "mysqldump command not found. please check your setting." | |
exit 1 | |
fi | |
if [ ! -d ${Backup_Home} ]; then | |
mkdir -p ${Backup_Home} | |
fi | |
if [ ${Enable_FTP} = 0 ]; then | |
type lftp >/dev/null 2>&1 || { echo >&2 "lftp command not found. Install: centos:yum install lftp, debian/ubuntu:apt-get install lftp."; } | |
fi | |
echo "Deleting old backup files..." | |
rm -f ${Backup_Home}www-*.tar.gz | |
rm -f ${Backup_Home}db-*.sql | |
echo "Backup website files..." | |
for dd in ${Backup_Dir[@]}; do | |
Backup_Dir ${dd} | |
done | |
echo "Backup Databases..." | |
for db in ${Backup_Database[@]}; do | |
Backup_Sql ${db} | |
done | |
if [ ${Enable_Rclone} = 0 ]; then | |
echo "Deleting old backup files on ${Drive_Name} drive..." | |
rclone delete --min-age 1d ${Drive_Name}:${Drive_Dir} --include "www-*.tar.gz" | |
rclone delete --min-age 1d ${Drive_Name}:${Drive_Dir} --include "db-*.sql" | |
echo "Uploading backup files to ${Drive_Name} drive..." | |
rclone copy --ignore-existing ${Backup_Home} ${Drive_Name}:${Drive_Dir} | |
fi | |
if [ ${Enable_FTP} = 0 ]; then | |
echo "Uploading backup files to ftp..." | |
cd ${Backup_Home} | |
lftp ${FTP_Host} -u ${FTP_Username},${FTP_Password} << EOF | |
cd ${FTP_Dir} | |
mrm ${AllWWWBackup} | |
mrm ${AllDBBackup} | |
mput ${TodayWWWBackup} | |
mput ${TodayDBBackup} | |
bye | |
EOF | |
echo "complete." | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Original: https://github.com/lnmpkvemail/lnmp/blob/master/tools/backup.sh