自动清理hugo缓存的脚本

wen 实用脚本 3

本文目录导读:

自动清理hugo缓存的脚本

  1. 使用方法
  2. 高级版本(带确认和选项)
  3. 自动清理(Cron 定时任务)
  4. 注意事项
#!/bin/bash
# Hugo 缓存清理脚本
# 使用: bash clean-hugo-cache.sh
echo "========================================"
echo "   Hugo 缓存与生成文件清理工具"
echo "========================================"
# 1. 清理 Hugo 默认缓存目录
CACHE_DIR="$HOME/.cache/hugo"
if [ -d "$CACHE_DIR" ]; then
    echo "📁 删除 Hugo 缓存目录: $CACHE_DIR"
    rm -rf "$CACHE_DIR"
    echo "✅ 缓存已清除"
else
    echo "ℹ️  缓存目录不存在: $CACHE_DIR"
fi
# 2. 清理当前目录下的生成文件
GENERATED_DIRS=("public" "resources" "_vendor")
for dir in "${GENERATED_DIRS[@]}"; do
    if [ -d "$dir" ]; then
        echo "📁 删除目录: $dir"
        rm -rf "$dir"
        echo "✅ 已删除 $dir"
    else
        echo "ℹ️  目录不存在: $dir"
    fi
done
# 3. 清理 Hugo 临时文件
TEMP_FILES=("hugo.lock" ".hugo_build.lock")
for file in "${TEMP_FILES[@]}"; do
    if [ -f "$file" ]; then
        echo "📄 删除文件: $file"
        rm -f "$file"
        echo "✅ 已删除 $file"
    else
        echo "ℹ️  文件不存在: $file"
    fi
done
echo ""
echo "========================================"
echo "   ✅ 清理完成"
echo "   下次运行 hugo 将重新生成所有文件"
echo "========================================"

使用方法

创建脚本文件

# 创建文件并粘贴上述脚本内容
nano clean-hugo-cache.sh

添加执行权限

chmod +x clean-hugo-cache.sh

运行脚本

# 在 Hugo 项目根目录运行
./clean-hugo-cache.sh

高级版本(带确认和选项)

#!/bin/bash
# Hugo 高级缓存清理脚本
VERSION="1.0.0"
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
print_usage() {
    echo "用法: $0 [选项]"
    echo "选项:"
    echo "  -y, --yes       直接执行,跳过确认"
    echo "  -v, --verbose   显示详细信息"
    echo "  -d, --dry-run   模拟运行,不实际删除"
    echo "  -h, --help      显示帮助信息"
}
VERBOSE=false
DRY_RUN=false
SKIP_CONFIRM=false
# 解析参数
while [[ $# -gt 0 ]]; do
    case $1 in
        -y|--yes)
            SKIP_CONFIRM=true
            shift
            ;;
        -v|--verbose)
            VERBOSE=true
            shift
            ;;
        -d|--dry-run)
            DRY_RUN=true
            shift
            ;;
        -h|--help)
            print_usage
            exit 0
            ;;
        *)
            echo "未知选项: $1"
            print_usage
            exit 1
            ;;
    esac
done
echo -e "${YELLOW}========================================"
echo "   Hugo 缓存清理工具 v$VERSION"
echo -e "========================================${NC}"
# 显示将要删除的内容
if [ "$VERBOSE" = true ]; then
    echo ""
    echo "将要清理的项目:"
    echo "  - Hugo 缓存目录: ~/.cache/hugo"
    echo "  - 生成目录: public/ resources/ _vendor/"
    echo "  - 临时文件: hugo.lock .hugo_build.lock"
fi
# 确认操作
if [ "$SKIP_CONFIRM" = false ] && [ "$DRY_RUN" = false ]; then
    echo ""
    read -p "确认清理所有缓存?(y/N): " confirm
    if [[ ! "$confirm" =~ ^[Yy]$ ]]; then
        echo -e "${YELLOW}操作已取消${NC}"
        exit 0
    fi
fi
# 执行清理
clean_item() {
    local item=$1
    local path=$2
    if [ -e "$path" ]; then
        if [ "$DRY_RUN" = true ]; then
            echo -e "${YELLOW}[DRY RUN] 将删除: $path${NC}"
        else
            rm -rf "$path"
            echo -e "${GREEN}已删除: $path${NC}"
        fi
    else
        if [ "$VERBOSE" = true ]; then
            echo -e "跳过不存在: $path"
        fi
    fi
}
echo ""
echo "开始清理..."
# 清理 Hugo 缓存
clean_item "Hugo缓存" "$HOME/.cache/hugo"
# 清理生成目录
for dir in "public" "resources" "_vendor"; do
    clean_item "生成目录" "$(pwd)/$dir"
done
# 清理临时文件
for file in "hugo.lock" ".hugo_build.lock"; do
    clean_item "临时文件" "$(pwd)/$file"
done
echo ""
if [ "$DRY_RUN" = true ]; then
    echo -e "${YELLOW}模拟运行完成,没有实际删除文件${NC}"
else
    echo -e "${GREEN}清理完成!${NC}"
    echo "下次运行 hugo 将重新生成所有文件"
fi

自动清理(Cron 定时任务)

如果你想要自动定期清理 Hugo 缓存:

# 编辑 crontab
crontab -e
# 添加以下行(每周日凌晨 3 点清理)
0 3 * * 0 /path/to/clean-hugo-cache.sh -y >> /dev/null 2>&1

注意事项

  1. 备份重要文件:确保 public/ 目录下的自定义内容已备份
  2. 主题缓存:如果使用 Git 子模块的主题,_vendor 目录的清理不会影响主题文件
  3. Docker 环境:如果在 Docker 中使用,可能需要同时清理 Docker 卷中的缓存

这个脚本不会影响你的源文件(content/, themes/, config.toml 等)。

抱歉,评论功能暂时关闭!