自动更新目录下Git Mirror

#!/bin/bash

# 每小时执行一次
# 0 * * * * bash /srv/git/auto_update.sh >> /var/log/git_mirror_update.log 2>&1

GIT_MIRROR_PATH=/srv/git/mirror

date "+%Y-%m-%d %H:%M:%S"
grep "mirror = true" -R $GIT_MIRROR_PATH | awk '{print $1}' | xargs dirname | xargs -I {} bash -c "echo {};git -C {} remote update;if((\!\$?)); then date '+%Y-%m-%d %H:%M:%S' > {}/lastupdate; fi;"

date +%Y-%m-%d\ %H:%M:%S >> /var/log/git_mirror_update.log; 先记录时间

grep "mirror = true" -R /srv/git/mirror 查找目录下的config文件中mirror=true

awk '{print $1}' 获得路径

xargs dirname 获得目录

xargs -t -I {} bash -c "git -C {} remote update;if((\!\$?)); then date +%Y-%m-%d\ %H:%M:%S > {}/lastupdate; fi;" 执行更新,如果正常写入最新更新时间。

>> /var/log/git_mirror_update.log 2>&1 错误和标准输出统统纪录