You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Github仓库中的文件夹制定清理与归档策略

解决方案

一、自动化归档脚本

编写Shell脚本(适配Linux/macOS,Windows可改用PowerShell),自动筛选并归档超过3个月的SQL文件,按时间维度分类存储方便查阅。

脚本示例(基于Git提交时间,更准确反映文件实际生效时间)

#!/bin/bash

# 配置路径
SOURCE_DIR="./ddl-scripts"
ARCHIVE_ROOT="./ddl-scripts-archive"

# 创建归档根目录
mkdir -p "$ARCHIVE_ROOT"

# 查找并归档超过90天的.sql文件
find "$SOURCE_DIR" -maxdepth 1 -type f -name "*.sql" -mtime +90 | while read -r FILE; do
    # 获取文件的Git提交年月
    FILE_DATE=$(git log -1 --format="%ad" --date=format:"%Y-%m" "$FILE")
    # 若无需依赖Git,改用系统修改时间:FILE_DATE=$(date -r "$FILE" +"%Y-%m")
    
    ARCHIVE_DIR="$ARCHIVE_ROOT/$FILE_DATE"
    mkdir -p "$ARCHIVE_DIR"
    
    mv "$FILE" "$ARCHIVE_DIR/"
    echo "已归档: $FILE -> $ARCHIVE_DIR"
done

二、仓库归档结构设计

  • 主工作目录ddl-scripts仅保留近3个月的活跃SQL文件,维持文件数量可控
  • 归档目录ddl-scripts-archive按YYYY-MM分文件夹存储历史文件,例如2024-01、2024-02,便于快速定位历史版本
  • 归档文件仍保留在Git仓库中,完整保留所有历史记录

三、CICD流程优化

  • 修改CICD触发规则:仅监控ddl-scripts文件夹的新增/变更,无需扫描归档目录
  • 压缩步骤仅针对ddl-scripts文件夹,大幅减少压缩耗时
  • 若CICD支持构建缓存,将归档目录加入缓存忽略列表,进一步提升构建速度

四、自动化触发配置

通过CI/CD工具的定时任务实现无人值守归档,以下是GitHub Actions的配置示例:

name: 归档旧SQL脚本
on:
  schedule:
    - cron: '0 0 * * 0' # 每周日凌晨自动执行
  workflow_dispatch: # 保留手动触发入口

jobs:
  archive-job:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: 执行归档脚本
        run: |
          chmod +x archive-old-sql.sh
          ./archive-old-sql.sh
      - name: 提交并推送归档结果
        run: |
          git config --global user.name "GitHub Actions"
          git config --global user.email "actions@github.com"
          git add .
          git commit -m "自动归档旧SQL脚本"
          git push

GitLab CI、Jenkins等工具可参照类似逻辑配置定时任务,周期可根据需求调整为每周/每两周。

五、注意事项

  • 首次执行脚本会批量归档所有符合条件的旧文件,后续定期执行仅处理新增的过期文件
  • 可根据实际需求调整时间阈值(将-mtime +90改为+60即归档2个月以上的文件)
  • 若需临时查阅历史文件,直接进入归档目录对应年月的文件夹即可

内容的提问来源于stack exchange,提问作者Nik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 22:45:28