現在我 obsidain 工具為 Shell commands + rclone bisync + bash
實現開啟 obsidian 時自動同步,rclone 的 Log 以 markdown 格式寫到 sync.md 的開頭,並列出衝突的檔案,並自動截斷超過 20000 行的部分
目前除了不小心斷網開啟 obsidain 時會導致異常結束需要人工介入外可自動運行
Rclone bisync 異常結束時建議先用 --recover 恢復而不是 --resync 以免覆蓋遠端資料
Install
- Install Rclone (如果再 Windows 上只需要把 Rclone 放到 bash PATH 可以找到的地方)
- (只有 Windows 需要) 安裝 bash,我通常會直接裝 Git for Windows
- 設定 Rclone 遠端遙控器,Google Drive 有活動紀錄刪除會移到回收桶,檔案覆蓋會有版本紀錄,建議可以設定 root_folder_id 限制 rclone 只能上傳特定資料夾
- 把 sync.bash 複製到 obsidian 的 root
- 設定 Shell commands 執行
"\Program Files\Git\git-bash.exe" sync.bash
sync.bash
tmpc=".0.sync"
tmpm=".1.sync"
echo "### $(date +'%Y-%m-%dT%H:%M:%S')" > ${tmpc}
echo "#### Rclone" >> ${tmpc}
echo '```' >> ${tmpc}
rclone bisync . note: --create-empty-src-dirs --compare size,modtime,checksum --slow-hash-sync-only -v --drive-skip-gdocs --fix-case --max-delete 5 --max-lock 720 --color NEVER --exclude-from ExcludeFile.txt 2>> ${tmpc}
SyncRlt="$?"
echo '```' >> ${tmpc}
if [ ${SyncRlt} -eq '0' ]
then
echo "Rclone Bisync Successful"
else
echo "Rclone Bisync Error, Please See sync.md"
fi
echo "#### Conflict" >> ${tmpc}
find . -type f -name '*.conflict?' -exec echo "- [{}]({})" \; >> ${tmpc}
cat ${tmpc} sync.md > ${tmpm}
tail -n 20000 -q ${tmpm} > sync.md
rm ${tmpc} ${tmpm}