LNMP站点定时备份脚本

VPS上面有一个或者多个站点,并且有数据库,需要定期备份,防止网站出现问题可以随时恢复。

如果用的是军哥的lnmp.sh脚本建站的话,那么备份比较方便。

本地备份

首先要备份网站和数据库等内容到本地,打成压缩包的形式,脚本内容如下,按需修改即可。

#!/bin/bash

#先设置备份保存的路径和MySQL Dump路径
Backup_Home="/home/backup/"
MySQL_Dump="/usr/local/mysql/bin/mysqldump"

######设置要备份的站点路径 可以一个或多个######
Backup_Dir=("/home/wwwroot/a.com" "/home/wwwroot/b.com")

######设置要备份的数据库名######
Backup_Database=("typecho")

######设置MySQL管理员账号密码######
MYSQL_UserName='root'
MYSQL_PassWord='yourpassword'

######是否备份FTP######
Enable_FTP=1
# 0: 开启; 1: 关闭
######设置FTP信息######
FTP_Host='1.2.3.4'
FTP_Username='vpser.net'
FTP_Password='yourftppassword'
FTP_Dir="backup"

#设置完毕

TodayWWWBackup=www-*-$(date +"%Y%m%d").tar.gz
TodayDBBackup=db-*-$(date +"%Y%m%d").sql
OldWWWBackup=www-*-$(date -d -3day +"%Y%m%d").tar.gz
OldDBBackup=db-*-$(date -d -3day +"%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 "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

echo "Delete old backup files..."
rm -f ${Backup_Home}${OldWWWBackup}
rm -f ${Backup_Home}${OldDBBackup}

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 ${OldWWWBackup}
mrm ${OldDBBackup}
mput ${TodayWWWBackup}
mput ${TodayDBBackup}
bye
EOF

echo "complete."

fi

远程备份

如果需要备份到远程,可以使用rclone,支持备份到onedrive,google drive等十几种网盘,命令也很简单。

安装rclone:

curl https://rclone.org/install.sh | sudo bash

设置网盘

rclone config

然后输入n新建远端网盘,按照要求配置即可。配置好之后在脚本中添加以下代码可以定时备份到远端网盘。下面的代码需要根据你脚本和rclone的配置修改。

rclone sync /home/backup gdrive:backup

Jozhn

学习中

Comments : 2

  1. 我用的插件备份数据库。

    1. @奶爸建网站笔记

      脚本配置好还是挺方便的

发表留言

人生在世,错别字在所难免,无需纠正。