背景 将本地目录做一个存储仓库,将归档的文件放入其中。自动同步到远程仓库。
仓库配置 省略
配置密钥 用户可以 git pull \ git push \ git commit
自动 拉取、更新 脚本
文件名:autosave.sh
#!/bin/zsh
# 设置变量
LOCAL_DIR=$1
# 进入工作目录
cd "$LOCAL_DIR" || { echo "无法进入目录 $LOCAL_DIR"; exit 1; }
# 拉取代码
pvsh() { git rev-parse --abbrev-ref HEAD | xargs -I {} git push origin '{}'; };
# 推送代码
pvll() { git rev-parse --abbrev-ref HEAD | xargs -I {} git pull origin '{}'; };
# 强制拉取代码
pxsh() { git rev-parse --abbrev-ref HEAD | xargs -I {} git push origin --force '{}'; };
# 强制推送代码
pxll() { git rev-parse --abbrev-ref HEAD | xargs -I {} git pull origin --force '{}'; };
commit() { git log -1 --pretty=format:'%B' | git commit -a -F -; };
if [ "$(git status --short | awk '{print $2}' | wc -l)" -gt 0 ]; then
## 当前目录下有新的文件 或者 有文件更新
git add .
commit;
pvll;
if [ $? -ne 0 ] ; then
## mac OS 系统中调用一个弹窗 弹出脚本异常,用户需要主动修改
osascript -e 'tell application "System Events" to display dialog "脚本异常!" buttons {"确定"} default button 1'
fi
pvsh;
if [ $? -ne 0 ] ; then
## mac OS 系统中调用一个弹窗 弹出脚本异常,用户需要主动修改
osascript -e 'tell application "System Events" to display dialog "脚本异常!" buttons {"确定"} default button 1'
fi
else
## 当前目录没有更新则直接拉取
pvll;
fi
定时任务
文件名:com.rc.autosave.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.rc.autosave</string>
<key>ProgramArguments</key>
<array>
<string>/bin/zsh</string>
<string>/Users/rc/Code/markdown/autosave.sh</string>
<string>/Users/rc/Code/markdown/</string>
</array>
<key>StartInterval</key>
<integer>300</integer> <!-- 五分钟执行一次 -->
<key>RunAtLoad</key>
<true/> <!-- 开机启动 -->
<key>StandardOutPath</key>
<string>/tmp/autosave.log</string>
<key>StandardErrorPath</key>
<string>/tmp/autosave_error.log</string>
</dict>
</plist>
Mac os 配置任务
launchctl load ./com.rc.autosave.plist # 载入配置文件
launchctl list | grep autosave # 查看自动化配置
Linux 配置任务
- crontab -e
- */5 * * * * /Users/rc/Code/markdown/autosave.sh
原文档地址: Issues/51