Tag Archives: 自动备份数据上传到FTP服务器

Web MySQL 一键备份脚本

脚本特性说明:

  • 将网站数据/数据库数据备份到远程FTP服务器;
  • 支持 CentOS/Fedora/Ubuntu/Debian 系统;
  • 支持 crontab 定时备份;
#!/bin/env bash
# 根据系统版本安装FTP工具
command -v yum >/dev/null 2>&1 && apt-get -y install ftp
command -v apt-get >/dev/null 2>&1 && yum -y install ftp

# 数据库名/账号/密码
# 根据实际信息进行填写
DBName="renwole"
DBUser="renwole"
DBPass="Renwole1!@#"

# Ftp远程主机/端口/账号/密码
# 根据实际信息进行填写
FtpHost="renwole.com"
FtpPort="21"
FtpUser="renwole"
FtpPass="Renwole1!@#"
FtpDir="/wwwroot/Renwolecom"

# web名称/目录及备份路径
# 根据实际web路径进行修改
WebName="Renwole"
WebDir="/apps/web/renwole.com"
mkdir /backup
BakDir="/backup"

# 将数据库及网站数据打包备份并上传到ftp服务器
command -v mysqldump >/dev/null 2>&1 || { echo "Not found MySQL/MariaDB ENV"; kill -9 $$; }
mysqldump -u${DBUser} -p${DBPass} ${DBName} >${BakDir}/${DBName}-$(date +"%Y%m%d").sql
tar zcf ${BakDir}/${WebName}-$(date +"%Y%m%d").tar.gz ${WebDir}
ftp -v -n ${FtpHost} ${FtpPort}<< EOF
user ${FtpUser} ${FtpPass}
type binary
passive
cd ${FtpDir}
put ${BakDir}/${DBName}-$(date +"%Y%m%d").sql
put ${BakDir}/${WebName}-$(date +"%Y%m%d").tar.gz
bye
EOF

下载数据备份脚本:

curl -O https://renwole.com/sh/backup.sh && chmod +x backup.sh

设置crontab定时任务:

# 每天凌晨两点备份一次并推送到FTP服务器
echo "0 0 2 * * /backup/backup.sh" >> /var/spool/cron/root

:内容标注的红色部分是需要根据自己的实际信息进行修改,其他不需要修改。另外、也可以修改ftp并支持sftp安全备份模式。或者删除ftp只将数据备份到本地指定目录即可。