教程
网站自动备份入门:文件与数据库定时备份怎么做
网站挂了可以重建,数据没了就真的没了。备份是 VPS 上性价比最高的一道保险:成本是几分钟配置,收益是出问题时能按时恢复。这篇用最朴素的思路,把"数据库 + 文件 + 异地存放 + 定时"四件事讲清楚。
AI 操作示意图·以官网实际界面为准
1. 先搞清要备份什么
一个网站的数据分两半:
- 数据库:文章、用户、订单、配置,全部在这里;
- 网站文件:代码、上传的图片、主题、日志等。
只备份文件不备份数据库,等于备份了一半;只备份数据库不备份文件,恢复时依然抓瞎。两个都要。
另外记住一条:备份必须存在别处。放在同一台机器上,机器故障时备份跟着一起没,等于白做。
2. 数据库备份:mysqldump
MySQL 自带的 mysqldump 是最常用的数据库备份工具,它把数据库导出成一条条 SQL 语句,之后随时可以原样导回。基本用法:
mysqldump -u 用户名 -p 数据库名 > backup.sql
几个实用参数(以 MySQL 官方手册为准):
--single-transaction:对 InnoDB 表做一致性备份,导出过程中不锁表、不影响线上读写,是日常备份的推荐搭配;--routines:连存储过程、函数一起导出;- 导出后顺手压缩,能省不少空间:
mysqldump --single-transaction --routines -u 用户名 -p 数据库名 | gzip > backup-$(date +%Y%m%d).sql.gz
验证:导完先 ls -lh 看文件大小是否正常,再试一次 mysql < backup.sql 导入到临时库,确保文件不是空的。
3. 网站文件备份:打包 + 加密
文件部分,最直接的办法是把整个站点目录打成 tar 归档,再放到备份目录:
tar -czf site-files-$(date +%Y%m%d).tar.gz /var/www/你的站点目录
要点:
- 排除缓存、日志这类可再生目录,只打"丢了找不回"的东西;
- 压缩比不够满意就换
xz,体积更小、速度更慢; - 如果文件里有敏感数据,用 restic 这类带加密的备份工具,比裸归档更稳妥——restic 支持增量备份、全程加密、可验证恢复,一个二进制文件就能跑,官方称"把备份做对"。
AI 操作示意图·以官网实际界面为准
4. 推到异地:rclone 与备份保留策略
本机备好了,还得送一份出去。rclone 是支持 70+ 云存储的命令行工具,配置一次后,把备份目录同步到 S3、云盘或任意对象存储:
rclone copy /var/backups 远端:你的桶名/backups
三个原则:
- 每天至少推一次,和定时任务绑在一起;
- 保留多份:按天保留 7 份、按月保留 3 份之类,别让旧备份被覆盖掉;
- 定期抽查:从云端拉一次备份试恢复,别等要用的时候才发现是坏的。
5. 定时自动化:cron
一切都手动做等于没做。Linux 的 cron 让服务器自己干活,在 crontab 里加一行,比如每天凌晨 2 点先导数据库、再打包文件:
0 2 * * * /opt/backup.sh >/dev/null 2>&1
把数据库导出、文件打包、推到异地写进同一个脚本,加一行 set -e(脚本里任一命令失败就退出,避免"半套备份")。cron 的格式和细节以系统 crontab 手册为准(man 5 crontab)。
6. 最后一步:演练恢复
备份的价值在于能恢复。每季度至少做一次完整演练:在另一台机器上把最新的 SQL 导入、文件解包,确认站点能跑起来。恢复不了数据的备份,只是心理安慰。

小结
一套合格的网站备份长这样:mysqldump 导数据库 → tar 打包文件 → rclone 推到异地 → cron 每天自动执行 → 季度恢复演练。别追求复杂方案,把这五步跑通,99% 的数据丢失场景都兜得住。
官方资料
资料核对日期:2026-10-25
- Rclone 官网(文件同步与云存储备份工具):https://rclone.org/
- Restic 官网(加密增量备份工具):https://restic.net/
- MySQL 官方手册 mysqldump(数据库备份工具说明):https://dev.mysql.com/doc/refman/8.4/en/mysqldump.html
最近一周热门文章
按近 7 天访问热度排序,热度积累前优先展示新文章。
当前栏目最新文章
教程 · 继续阅读同栏目的新内容
一起交流
0 条留言LEAVE A NOTE
你的经验,也很重要。
无需注册或登录。请勿公开邮箱密码、证件、银行卡号或其他敏感信息。
















还没有留言,来分享你的想法吧。