脚本特性说明:
- 将网站数据/数据库数据备份到远程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只将数据备份到本地指定目录即可。