同步代码项目脚本
#!/bin/bash
# ==========================================
# auto_git_update.sh
# 每天自动更新多个 Git 仓库到指定目录
# 作者: ChatGPT
# ==========================================
# ===== 基本配置 =====
BASE_DIR="/home/git" # 所有仓库存放的目录
LOG_FILE="/home/git_update.log"
# ===== 仓库列表(可添加多个) =====
GIT_URLS=(
"https://github.com/tcq20256/feeday.git"
"https://github.com/tcq20256/tcq20256.github.io.git"
)
# ===== 函数:更新或克隆仓库 =====
update_repo() {
local GIT_URL="$1"
local REPO_NAME=$(basename "$GIT_URL" .git)
local REPO_DIR="${BASE_DIR}/${REPO_NAME}"
echo "----------------------------------------" | tee -a "$LOG_FILE"
echo "🕒 $(date '+%F %T') 开始处理仓库:$REPO_NAME" | tee -a "$LOG_FILE"
# 确保目录存在
mkdir -p "$BASE_DIR"
# 克隆或更新
if [ ! -d "$REPO_DIR/.git" ]; then
echo "📦 第一次 clone 仓库:$GIT_URL" | tee -a "$LOG_FILE"
git clone "$GIT_URL" "$REPO_DIR" >> "$LOG_FILE" 2>&1
else
echo "🔄 更新仓库:$REPO_NAME" | tee -a "$LOG_FILE"
cd "$REPO_DIR" || { echo "❌ 无法进入目录:$REPO_DIR" | tee -a "$LOG_FILE"; return; }
git reset --hard HEAD >> "$LOG_FILE" 2>&1
git pull >> "$LOG_FILE" 2>&1
fi
if [ $? -eq 0 ]; then
echo "✅ 完成更新:$REPO_NAME" | tee -a "$LOG_FILE"
else
echo "⚠️ 更新失败:$REPO_NAME" | tee -a "$LOG_FILE"
fi
}
# ===== 主逻辑:循环处理每个仓库 =====
echo "========================================" | tee -a "$LOG_FILE"
echo "🚀 启动自动 Git 更新任务 $(date '+%F %T')" | tee -a "$LOG_FILE"
for url in "${GIT_URLS[@]}"; do
update_repo "$url"
done
echo "✅ 所有仓库处理完毕 $(date '+%F %T')" | tee -a "$LOG_FILE"
echo "========================================" | tee -a "$LOG_FILE"
❤️ 转载文章请注明出处,谢谢!❤️