Featured image of post Halo 博客备份与文章导出 📝

Halo 博客备份与文章导出 📝

Halo 博客备份与文章导出 📝 🔄 全面保护你的博客内容,防止数据丢失! 📋 目录导航 &#

Halo 博客备份与文章导出 📝

🔄 全面保护你的博客内容,防止数据丢失!


📋 目录导航

· 💾 后台备份 · 📦 备份文件位置 · 📂 文章导出路径 · 🔄 自动备份脚本 · 🚀 快速恢复指南 · 💡 备份策略建议


💾 后台备份

手动备份步骤

  1. 登录 Halo 后台管理界面
  2. 进入「系统」->「备份」
  3. 点击「立即备份」按钮
  4. 等待备份完成(备份文件将自动生成)

https://file.meimolihan.eu.org/screenshot/halo-backup.png


📦 备份文件位置

默认备份路径

1
2
3
4
5
6
7
8
# 进入备份目录
cd /mnt/mydisk/home/halo/config/halo2/backups

# 查看备份文件
ls -la *.zip

# 按时间排序查看最新备份
ls -lt *.zip | head -5

备份文件命名格式

1
2
YYYYMMDDHHMMSS-backup-随机标识符.zip
示例:20241025192604-backup-PPAuB.zip

📂 文章导出路径

解压备份文件

1
2
3
4
5
6
7
8
# 创建解压目录
mkdir -p /tmp/halo-backup

# 解压备份文件(请替换为实际文件名)
unzip /mnt/mydisk/home/halo/config/halo2/backups/20241025192604-backup-PPAuB.zip -d /tmp/halo-backup/

# 查看导出的文章
find /tmp/halo-backup -name "*.html" -type f | head -10

文章存储路径

1
2
3
4
备份文件解压后路径:
/tmp/halo-backup/workdir/plugins/export2doc_files/export/

文章格式:HTML 文件

🔄 自动备份脚本

自动化备份脚本

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!/bin/bash

# Halo 自动备份脚本
# 设置变量
BACKUP_DIR="/mnt/mydisk/home/halo/config/halo2/backups"
LOG_FILE="/var/log/halo-backup.log"
RETENTION_DAYS=30  # 保留最近30天的备份

# 创建日志函数
log() {
    echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> $LOG_FILE
}

# 开始备份
log "开始 Halo 备份流程"

# 检查备份目录是否存在
if [ ! -d "$BACKUP_DIR" ]; then
    log "错误: 备份目录不存在: $BACKUP_DIR"
    exit 1
fi

# 执行备份 (这里需要根据你的Halo安装方式调整备份命令)
# 如果是docker安装,可能需要执行docker命令触发备份
# docker exec halo halo backup

log "备份命令已执行,等待备份文件生成..."

# 等待备份完成
sleep 30

# 查找最新备份文件
LATEST_BACKUP=$(ls -t $BACKUP_DIR/*.zip | head -1)

if [ -n "$LATEST_BACKUP" ]; then
    log "最新备份文件: $LATEST_BACKUP"
    
    # 提取文章到指定目录
    EXTRACT_DIR="/opt/halo-articles/$(date +%Y%m%d)"
    mkdir -p $EXTRACT_DIR
    unzip -o "$LATEST_BACKUP" "workdir/plugins/export2doc_files/export/*" -d "$EXTRACT_DIR" >> $LOG_FILE 2>&1
    
    # 移动文章文件到更直观的位置
    if [ -d "$EXTRACT_DIR/workdir/plugins/export2doc_files/export" ]; then
        mv "$EXTRACT_DIR/workdir/plugins/export2doc_files/export/"* "$EXTRACT_DIR/"
        rm -rf "$EXTRACT_DIR/workdir"
        log "文章已提取到: $EXTRACT_DIR"
    fi
    
    # 清理旧备份(保留最近30天)
    find $BACKUP_DIR -name "*.zip" -mtime +$RETENTION_DAYS -delete >> $LOG_FILE 2>&1
    log "已清理超过 $RETENTION_DAYS 天的旧备份"
else
    log "警告: 未找到备份文件"
fi

log "备份流程完成"

设置定时自动备份

1
2
3
4
5
6
7
# 编辑crontab
crontab -e

# 添加以下行,每天凌晨2点执行备份
0 2 * * * /path/to/your/halo-backup-script.sh

# 保存并退出

🚀 快速恢复指南

从备份恢复 Halo

  1. 进入 Halo 后台「系统」->「备份」
  2. 找到要恢复的备份文件
  3. 点击「恢复」按钮
  4. 确认恢复操作
  5. 等待恢复完成

手动恢复文章

1
2
3
4
5
6
7
# 将提取的文章重新导入Halo
# 注意:这需要根据Halo的导入功能进行操作

# 通常可以通过以下方式:
# 1. 将HTML文件转换为Markdown
# 2. 使用Halo的导入功能
# 3. 或通过API批量创建文章

💡 备份策略建议

🔒 多重备份策略

  1. 本地备份:保留最近7天的每日备份
  2. 异地备份:每周将备份文件同步到云存储(如AWS S3、Google Drive等)
  3. 文章导出:每月导出一次所有文章为HTML/Markdown格式

📊 备份监控

1
2
3
4
5
6
7
# 检查备份状态的简单脚本
#!/bin/bash
BACKUP_COUNT=$(find /mnt/mydisk/home/halo/config/halo2/backups -name "*.zip" -mtime -1 | wc -l)

if [ $BACKUP_COUNT -eq 0 ]; then
    echo "警告: 过去24小时内没有生成备份!" | mail -s "Halo备份警报" admin@example.com
fi

🗂️ 备份目录结构示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
/mnt/mydisk/backups/
├── halo/
│   ├── daily/20241025.zip
│   ├── daily/20241026.zip
│   └── weekly/20241020.zip
└── articles/
    ├── 20241025/
    │   ├── post1.html
    │   └── post2.html
    └── 20241026/
        ├── post1.html
        └── post3.html

🎯 提示:定期测试备份文件的恢复过程,确保在真正需要时能够顺利恢复数据!建议每季度至少进行一次恢复演练。

最后更新于 2025-09-28