网站备份是出事之后最后悔没做的东西。很多人服务器被黑后才发现数据库没备份,几年的内容一夜归零。其实一个shell脚本加一个定时任务就能解决。
下面这个脚本同时备份MySQL数据库和网站源码,按日期命名,保留最近7天。Linux服务器直接放到/root/backup.sh,Windows可以改成PowerShell版本,或者把Linux脚本放在宝塔面板的Shell终端里执行。
#!/bin/bash
SITE_DIR="/www/wwwroot/yoursite"
DB_NAME="yourdb"
DB_USER="root"
DB_PASS="yourpass"
BACKUP_DIR="/backup/$(date +%Y%m%d)"
mkdir -p $BACKUP_DIR
# 备份数据库
mysqldump -u$DB_USER -p$DB_PASS --single-transaction $DB_NAME | gzip > $BACKUP_DIR/db.sql.gz
# 备份网站文件
tar -czf $BACKUP_DIR/files.tar.gz -C $(dirname $SITE_DIR) $(basename $SITE_DIR)
# 删除7天前的备份
find /backup -maxdepth 1 -type d -mtime +7 -exec rm -rf {} \;
脚本写好之后加一条crontab,每天凌晨3点执行。备份文件建议再同步一份到对象存储,比如阿里云OSS或腾讯云COS,做到异地容灾。
# crontab -e
0 3 * * * /bin/bash /root/backup.sh >> /var/log/backup.log 2>&1
数据来源:MySQL Reference Manual 8.0(mysqldump),Linux crontab官方文档
A5创业网 版权所有