💾 备份与升级
博客是长期项目,养成备份习惯,定期升级以获得新功能和安全补丁。
📦 备份内容
TBlog 的数据分为两部分:
- 数据库:所有文章、评论、设置(
settings表) - 文件:上传的图片、附件(如果有)
🗄 备份数据库
方法一:mysqldump(推荐)
# 备份整个数据库 mysqldump -u tblog -p tblog > tblog_$(date +%Y%m%d).sql # 只备份数据,不带建表语句 mysqldump -u tblog -p --no-create-info tblog > data.sql # 压缩 mysqldump -u tblog -p tblog | gzip > tblog_$(date +%Y%m%d).sql.gz
方法二:phpMyAdmin
- 登录 phpMyAdmin
- 选中 TBlog 数据库
- 点击「导出」标签
- 格式选 SQL,勾选「添加 DROP TABLE」
- 点击「执行」,下载 .sql 文件
方法三:后台「设置」页面
登录后台 → 设置 → 找到「数据库备份」按钮 → 一键下载(v1.1+)。
📁 备份文件
# 打包整个 TBlog 目录 tar -czf tblog_files_$(date +%Y%m%d).tar.gz /var/www/html # 或只备份 uploads 目录 tar -czf tblog_uploads_$(date +%Y%m%d).tar.gz /var/www/html/uploads
⏰ 自动备份(crontab)
建议每天凌晨 3 点自动备份,保留 30 天:
# 编辑 crontab crontab -e # 添加这一行:每天凌晨 3 点备份数据库,保留 30 天 0 3 * * * /usr/bin/mysqldump -u tblog -p'密码' tblog | gzip > /backup/tblog_$(date +\%Y\%m\%d).sql.gz 0 4 * * * find /backup -name "tblog_*.sql.gz" -mtime +30 -delete
⚠️
密码中的特殊字符
如果密码含 % / ! / $ 等字符,需要用 '%' → '\%' 转义,或改用 --defaults-file 读取配置文件。
更安全的方式 — 创建 /root/.my.cnf:
/root/.my.cnf
[client] user=tblog password=your_secure_password
crontab
# 这样 cron 里就不用写密码了 0 3 * * * /usr/bin/mysqldump tblog | gzip > /backup/tblog_$(date +\%Y\%m\%d).sql.gz
♻️ 恢复数据
# 恢复 .sql 文件 mysql -u tblog -p tblog < tblog_20260531.sql # 恢复 .sql.gz 压缩包 gunzip < tblog_20260531.sql.gz | mysql -u tblog -p tlog
⬆️ 升级到新版本
⚠️
升级前必做
1. 备份数据库 · 2. 备份文件 · 3. 记录当前版本号
- 查看更新日志 访问 CHANGELOG.md,确认升级路径与新版本兼容性。
- 备份 按上文备份数据库和文件。
-
下载新版
从 Releases 下载
TBlog_v{x.y.z}.zip。 -
替换文件
解压后覆盖到网站目录。注意保留
config.php、uploads/。# 解压新版本 unzip TBlog_v1.2.0.zip -d /tmp/tblog_new # 同步到网站目录(保留 config.php 和 uploads) rsync -av --exclude='config.php' --exclude='uploads/' \ /tmp/tblog_new/ /var/www/html/ # 修复权限 chown -R www-data:www-data /var/www/html
-
运行迁移脚本
如果新版本涉及数据库结构变更,通常会有
upgrade-1.1-to-1.2.php,按提示执行。 - 清缓存 浏览器硬刷新(Ctrl+Shift+R / Cmd+Shift+R)。
- 验证 访问首页、登录后台、查看一篇文章,确认无异常。
⏪ 回滚
如果升级出问题,立刻回滚:
# 恢复文件 rm -rf /var/www/html/* tar -xzf /backup/tblog_files_20260531.tar.gz -C / # 恢复数据库 mysql -u tblog -p tblog < /backup/tblog_20260531.sql
💡
推荐做法
在 staging / 测试环境先升级,跑一两天确认无问题再升级生产。每周固定一个时间升级,避免在周五/节假日前升级。