备份这件事最残酷的地方:你永远不知道什么时候需要它,但需要它的时候没有,代价就是实打实的。网站文件备份不复杂,核心就三个环节:备份什么(文件+数据库)、备到哪里(本地+异地)、怎么自动化(定时任务)。下面从最省事的宝塔面板方案到最灵活的脚本方案逐个拆开,按技术门槛从低到高排,你可以从自己舒服的起点开始。
一、七种备份方案总览
二、最省事方案:宝塔面板 + 云存储,十分钟配好自动异地备份
国内用宝塔面板的站长占了绝大多数,宝塔内置的备份功能做得相当成熟,不需要写一行代码。宝塔自动备份到阿里云OSS:六步走
几个关键的配置细节① 宝塔软件商店搜索"阿里云OSS",安装插件 ② 在阿里云控制台创建OSS Bucket,获取AccessKey ID和Secret ③ 回到宝塔OSS插件,填入Key和Bucket名称,测试连接 ④ 宝塔→计划任务→添加任务→任务类型选"备份网站"或"备份数据库" ⑤ 执行周期设"每天凌晨3:00",备份位置选"阿里云OSS",保留最新5份 ⑥ 再建一个备份数据库的任务,同样备份到OSS,同样每天执行
· 网站和数据库分开备:网站文件通常几十MB到几百MB,数据库可能只有几MB,分开备份恢复时更灵活——有时候只需要恢复数据库,不需要重传整个网站文件
· 保留份数别设太少:保留最新3-5份是合理区间。只保留1份的话,如果备份时刚好网站被挂马了,唯一的备份也是带毒的
· OSS开启版本控制:在阿里云OSS Bucket设置里打开版本控制,这样即使备份脚本出错覆盖了旧文件,也能回滚到上一个版本
· 腾讯云用户同理:软件商店搜"腾讯云COS",操作流程和OSS几乎一样,API密钥在腾讯云CAM控制台获取
三、WordPress用户:三个插件覆盖从免费到付费的全部需求
如果网站是WordPress搭的,插件方案比宝塔面板更精细——能在WordPress后台直接操作备份和恢复,不需要登录服务器面板。
UpdraftPlus 实操配置· 安装后进入设置→选择备份频率:文件每周一次、数据库每天一次(数据库变化频繁,文件变化少,分开设更合理)
· 远程存储选Google Drive(免费15GB,个人站长够用)或阿里云OSS(国内访问快)
· 完成OAuth授权后,点"立即备份"先手动跑一次,确认备份成功上传到远端
· 免费版唯一限制:不支持增量备份,每次都全量打包。如果网站文件超过500MB,建议升级付费版或换宝塔面板方案
四、命令行方案:rsync和Restic,适合有Linux基础的站长
如果你有一台额外的服务器或NAS做备份存储,命令行方案比面板更灵活、更可靠——不依赖任何第三方面板,纯系统级工具,出问题排查路径短。
一条命令搞定:
rsync -avz --delete /www/wwwroot/ user@backup-server:/backup/配成定时任务:
0 3 * * * rsync -avz --delete /www/wwwroot/ user@backup-server:/backup/ >> /var/log/backup.log 2>&1短板:没有历史快照,如果源文件被误删然后rsync同步了,备份端也会被删(加
--backup --backup-dir可以保留被删除的文件)。初始化备份仓库:
restic init --repo s3:s3.amazonaws.com/bucket-name执行备份:
restic backup /www/wwwroot --repo s3:s3.amazonaws.com/bucket-name查看快照列表:
restic snapshots——能看到每一次备份的时间点,恢复到任意历史版本。比rsync强在哪:加密传输+存储加密、自动去重节省空间、支持恢复到任意历史快照。
五、数据库备份不能忘,也不能只依赖面板
很多站长只备份了网站文件,忘了数据库——WordPress的文章、评论、用户、设置全在数据库里,丢了数据库等于丢了整个站的内容。
# 一行命令导出数据库,配合cron实现自动备份# 单次导出:mysqldump -u用户名 -p密码 数据库名 > /backup/db_$(date +%Y%m%d).sql# 压缩导出(省空间):mysqldump -u用户名 -p密码 数据库名 | gzip > /backup/db_$(date +%Y%m%d).sql.gz# 加入crontab每天凌晨2点自动备份,保留最近7天:0 2 * * * mysqldump -u用户名 -p密码 数据库名 | gzip > /backup/db_$(date +\%Y\%m\%d).sql.gz0 3 * * * find /backup/ -name "db_*.sql.gz" -mtime +7 -delete
⚠ 密码写在命令行里的安全隐患
mysqldump把密码明文写在命令行里,服务器上执行ps aux的人能看到。生产环境用--defaults-extra-file指定配置文件:mysqldump --defaults-extra-file=/root/.my.cnf 数据库名 | gzip > /backup/db.sql.gz
配置文件/root/.my.cnf内容:[mysqldump]
user=备份用户名
password=备份密码
然后chmod 600 /root/.my.cnf限制只有root可读。
六、备份策略怎么定:321原则足够用了
如:服务器硬盘 + OSS对象存储
OSS异地Bucket或另一家云厂商文件备份 宝塔计划任务 → 每天凌晨3点打包整站 → 上传到阿里云OSS → 保留最新5份 数据库备份 宝塔计划任务 → 每天凌晨2点导出SQL → 上传到阿里云OSS → 保留最新7份 额外保险 每月1号手动下载一份最新备份到本地电脑 → OSS出问题还有本地兜底 成本 OSS存储费约¥2-5/月(10GB以内),几乎可以忽略不计
七、按技术水平和场景选方案



