背景 將本地目錄做一個存儲倉庫,將歸檔的文件放入其中。自動同步到遠程倉庫。
倉庫配置 省略
配置密鑰 用戶可以 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'fipvsh;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