Windows下自動云備份思源筆記到Gitee

前言思源筆記是一款本地筆記為主的軟件 , 其目前提供了148元/year的付費同步功能,但對于21世紀中國難民而言還是太貴啦 。
條件允許的同學還是使用官方的同步 , 支持下作者 。

Windows下自動云備份思源筆記到Gitee

文章插圖
所以,就在思考有沒有白嫖的一種方法,能同步且不要付費呢 。
網上有些使用云盤自動同步 , 但可能導致數據丟失 。
這里提供方法:
筆記通過小軟件的方式進行自動同步到git 。
這個[siyuansyntogit]小軟件基于python開發,我只在win10上進行過測試,下方有源碼及exe提供 , 諸君自取 。
https://gitee.com/kingstacker/siyuansyntogit
Windows下自動云備份思源筆記到Gitee

文章插圖
筆者對python語言并不熟悉,這是第一個demo,當前對于我已然夠用,當然你可以自行進行更改 。
軟件及環境:
win10、思源筆記v2.4.7、siyuansyntogit、git、gitee網站
流程(1)軟件支持功能:
>目錄正確性判斷
>網絡連接線判斷,打開軟件后,檢測到電腦聯網后會自動拉取遠程文件同步
>檢測思源筆記開關狀態
>思源筆記軟件關閉則自動提交git同步
>小軟件運行后默認最小化 窗口運行
Windows下自動云備份思源筆記到Gitee

文章插圖
(2)確保你使用過Git,Git使用不再此文說明 。軟件放置路徑跟思源筆記的data路徑在同一層級 。git工程也在這一層級 。
Windows下自動云備份思源筆記到Gitee

文章插圖
.gitignore文件內容參考:避免其他文件夾同步,這里只會同步data文件夾 。思源筆記的筆記內容是存放在data文件夾中的 。
conf/history/temp/*exe(3)確保已經進行了初次git提交 , 確保環境一切正常 。enjoy it 。
(4)你也可以把小軟件開機自啟:
參考:https://zhuanlan.zhihu.com/p/446167633
(4.1)創建小軟件的快捷方式 。
Windows下自動云備份思源筆記到Gitee

文章插圖
(4.2)快捷方式拖入:win+R打開打開對話框輸入shell:startup,進入啟動文件夾
Windows下自動云備份思源筆記到Gitee

文章插圖
(5)小軟件運行界面圖示:小軟件打開默認最小化運行 。
Windows下自動云備份思源筆記到Gitee

文章插圖
檢測到思源筆記軟件關閉 , 則自動提交同步 。
Windows下自動云備份思源筆記到Gitee

文章插圖
這里使用gitee作為遠程倉庫,可以看到版本已經提交 。
Windows下自動云備份思源筆記到Gitee

文章插圖
(6)源碼參考:你可以進行任意更改,希望我的工作對你有所幫助 。
import osimport sysimport ctypesimport timeimport psutilfrom subprocess import callhome_dir = os.getcwd()#獲得當前路徑choice_list = ['上傳','下載']def git_update():os.chdir(home_dir)git_add_cmd= "git add ."git_commit_cmd = "git commit -m {}".format(gitdate)git_push_cmd= "git push origin master"call(git_add_cmd + "&&" +git_commit_cmd + "&&" +git_push_cmd,shell=True)def git_get():os.chdir(home_dir)git_pull_cmd = "git pull origin master"call(git_pull_cmd,shell=True)def is_process_running(process_name):pl = psutil.pids()for pid in pl:if psutil.Process(pid).name() == process_name:return Trueelse:return Falseif __name__ == "__main__":ctypes.windll.user32.ShowWindow(ctypes.windll.kernel32.GetConsoleWindow(), 6)print("---------------------------------------------------")print("歡迎使用 SiYuan Auto Backup,poweredBy kingstacker!")print("---------------------------------------------------")print("程序當前運行路徑:")print(home_dir)time.sleep(0.5)print("----------------")print("檢查程序執行路徑是否正確中...")dir_status = int(os.path.exists(home_dir+'\data'))if dir_status == 1:print("程序執行路徑正確.")passelse:print("未發現當前路徑存在data文件夾,請確認!")os.system("pause")sys.exit()eth_exit_code = 1print("----------------")print('檢查網絡連接狀態中,請等待...')status_befor = 0;auto_pull_status = 0;while True:if eth_exit_code == 1:# eth_exit_code = int(os.system('ping www.baidu.com > /dev/null'))eth_exit_code = int(os.system('ping www.baidu.com'))else:passif eth_exit_code == 1:print('沒聯網,確認你的網絡連接狀態.')time.sleep(2)while True:gitdate = time.strftime("%Y-%m-%d/%H-%M-%S/%A", time.localtime())if eth_exit_code:breakif auto_pull_status == 0:print("----------------")print("拉取遠程文件中...")git_get()print("拉取遠程文件完成!")print("----------------")time.sleep(2)try:siyuan_program_status = int(is_process_running("SiYuan.exe"))# 查看思源軟件是否打開except:passelse:passif status_befor == 0 and siyuan_program_status == 1:print("----------------")print("發現思源軟件已打開,等待軟件關閉...")if status_befor == 1 and siyuan_program_status == 0:print("----------------")print("發現思源軟件已關閉,備份筆記到云端中...")print("請等待...")print("拉取遠程文件更新確認中...")git_get()print("正在提交筆記...")git_update()print("提交備份已完成!")print("當前備份時間點:",gitdate)print("----------------")status_befor = int(siyuan_program_status)auto_pull_status = 1;

推薦閱讀