一、七种备份方案总览
二、最省事方案:宝塔面板 + 云存储,十分钟配好自动异地备份
国内用宝塔面板的站长占了绝大多数,宝塔内置的备份功能做得相当成熟,不需要写一行代码。宝塔自动备份到阿里云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:最简单可靠的增量同步核心原理:只传输变化的文件块,第二次同步比第一次快几十倍。
一条命令搞定:
配成定时任务:
短板:没有历史快照,如果源文件被误删然后rsync同步了,备份端也会被删(加
一条命令搞定:
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:加密+去重+多快照的现代方案核心优势:增量备份+客户端加密+去重+支持S3/SFTP/本地等多种后端。
初始化备份仓库:
执行备份:
查看快照列表:
比rsync强在哪:加密传输+存储加密、自动去重节省空间、支持恢复到任意历史快照。
初始化备份仓库:
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原则足够用了
3份副本原始数据 + 本地备份 + 异地备份
2种介质至少两种不同类型的存储
如:服务器硬盘 + OSS对象存储
如:服务器硬盘 + OSS对象存储
1份异地至少1份不在同一个机房
OSS异地Bucket或另一家云厂商
一个典型的个人站长备份配置OSS异地Bucket或另一家云厂商
| 文件备份 | 宝塔计划任务 → 每天凌晨3点打包整站 → 上传到阿里云OSS → 保留最新5份 |
| 数据库备份 | 宝塔计划任务 → 每天凌晨2点导出SQL → 上传到阿里云OSS → 保留最新7份 |
| 额外保险 | 每月1号手动下载一份最新备份到本地电脑 → OSS出问题还有本地兜底 |
| 成本 | OSS存储费约¥2-5/月(10GB以内),几乎可以忽略不计 |
七、按技术水平和场景选方案
别等到需要恢复那天才想起备份备份策略里最容易被忽略的一步不是"怎么备",而是"怎么恢复"。很多人的备份文件在OSS里躺了一年,真到要用的时候才发现:压缩包是坏的、数据库编码不一致导致导入乱码、文件权限全丢了、或者干脆忘了备份文件的加密密码。每三个月做一次恢复演练——找一台测试服务器,把最新备份下载下来,完整走一遍恢复流程。十分钟的演练,比备份了一年才发现文件损坏强一万倍。备份的可靠性不取决于你备了多少份,取决于上一次成功恢复是什么时候。



