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

如何通过CRON每日自动拉取GitHub仓库并覆盖本地文件?

实现GitHub静态仓库每日自动覆盖更新的CRON方案

1. 创建自动更新脚本

用git fetch + reset --hard可以直接强制覆盖本地文件,完全同步远程仓库最新版本,适配你的静态文件场景。

创建可执行脚本(比如/usr/local/bin/update-speedtest.sh),内容如下:

#!/bin/bash
# 切换到测速仓库目录,失败则退出
cd /usr/local/www/Speed-Test || exit 1
# 拉取远程仓库最新代码
git fetch origin
# 强制重置本地分支到远程main分支,覆盖所有本地文件
git reset --hard origin/main
# 如果仓库包含子模块,取消下面注释以同步子模块(当前项目不需要,可留作备用)
# git submodule update --init --recursive

给脚本添加执行权限:

chmod +x /usr/local/bin/update-speedtest.sh

2. 手动测试脚本

先手动运行脚本验证效果:

/usr/local/bin/update-speedtest.sh

执行后检查/usr/local/www/Speed-Test目录下的文件是否已更新,同时确认局域网内测速站点仍可正常访问。

3. 配置CRON定时任务

编辑用户crontab:

crontab -e

添加以下规则(示例为每天凌晨3点执行更新,可根据需求调整时间):

0 3 * * * /usr/local/bin/update-speedtest.sh >> /var/log/speedtest-update.log 2>&1
  • 0 3 * * *:代表每天3点整执行
  • >> /var/log/speedtest-update.log 2>&1:将脚本输出和错误信息写入日志文件,方便后续排查问题

保存退出后,CRON会自动加载新的任务,无需额外重启。

关键说明

  • 使用git reset --hard origin/main而非git pull:pull默认会尝试合并本地修改,而reset --hard会直接丢弃本地所有变更,完全同步远程最新版本,正好匹配你"直接覆盖"的需求。
  • 确保运行CRON的用户对仓库目录有读写权限,避免执行失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 21:45:36