TBlog 文档

💾 备份与升级

博客是长期项目,养成备份习惯,定期升级以获得新功能和安全补丁。

📦 备份内容

TBlog 的数据分为两部分:

🗄 备份数据库

方法一: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

  1. 登录 phpMyAdmin
  2. 选中 TBlog 数据库
  3. 点击「导出」标签
  4. 格式选 SQL,勾选「添加 DROP TABLE
  5. 点击「执行」,下载 .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. 记录当前版本号

  1. 查看更新日志 访问 CHANGELOG.md,确认升级路径与新版本兼容性。
  2. 备份 按上文备份数据库和文件。
  3. 下载新版Releases 下载 TBlog_v{x.y.z}.zip
  4. 替换文件 解压后覆盖到网站目录。注意保留 config.phpuploads/
    # 解压新版本
    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
  5. 运行迁移脚本 如果新版本涉及数据库结构变更,通常会有 upgrade-1.1-to-1.2.php,按提示执行。
  6. 清缓存 浏览器硬刷新(Ctrl+Shift+R / Cmd+Shift+R)。
  7. 验证 访问首页、登录后台、查看一篇文章,确认无异常。

⏪ 回滚

如果升级出问题,立刻回滚:

# 恢复文件
rm -rf /var/www/html/*
tar -xzf /backup/tblog_files_20260531.tar.gz -C /

# 恢复数据库
mysql -u tblog -p tblog < /backup/tblog_20260531.sql
💡
推荐做法

在 staging / 测试环境先升级,跑一两天确认无问题再升级生产。每周固定一个时间升级,避免在周五/节假日前升级。