Windows下自动云备份思源笔记到Gitee
前言
思源笔记是一款本地笔记为主的软件,其目前提供了148元/year的付费同步功能,但对于21世纪中国难民而言还是太贵啦。
条件允许的同学还是使用官方的同步,支持下作者。
所以,就在思考有没有白嫖的一种方法,能同步且不要付费呢。
网上有些使用云盘自动同步,但可能导致数据丢失。
这里提供方法:
笔记通过小软件的方式进行自动同步到git。
这个[siyuansyntogit]小软件基于python开发,我只在win10上进行过测试,下方有源码及exe提供,诸君自取。
https://gitee.com/kingstacker/siyuansyntogit
笔者对python语言并不熟悉,这是第一个demo,当前对于我已然够用,当然你可以自行进行更改。
软件及环境:
win10、思源笔记v2.4.7、siyuansyntogit、git、gitee网站
流程
(1)软件支持功能:
>目录正确性判断
>网络连接线判断,打开软件后,检测到电脑联网后会自动拉取远程文件同步
>检测思源笔记开关状态
>思源笔记软件关闭则自动提交git同步
>小软件运行后默认最小化 窗口运行
(2)确保你使用过Git,Git使用不再此文说明。软件放置路径跟思源笔记的data路径在同一层级。git工程也在这一层级。
.gitignore文件内容参考:避免其他文件夹同步,这里只会同步data文件夹。思源笔记的笔记内容是存放在data文件夹中的。
conf/
history/
temp/
*exe
(3)确保已经进行了初次git提交,确保环境一切正常。enjoy it。
(4)你也可以把小软件开机自启:
参考:https://zhuanlan.zhihu.com/p/446167633
(4.1)创建小软件的快捷方式。
(4.2)快捷方式拖入:win+R打开打开对话框输入shell:startup,进入启动文件夹
(5)小软件运行界面图示:小软件打开默认最小化运行。
检测到思源笔记软件关闭,则自动提交同步。
这里使用gitee作为远程仓库,可以看到版本已经提交。
(6)源码参考:你可以进行任意更改,希望我的工作对你有所帮助。
import os
import sys
import ctypes
import time
import psutil
from subprocess import call
home_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 True
else:
return False
if __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("程序执行路径正确.")
pass
else:
print("未发现当前路径存在data文件夹,请确认!")
os.system("pause")
sys.exit()
eth_exit_code = 1
print("----------------")
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:
pass
if 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:
break
if auto_pull_status == 0:
print("----------------")
print("拉取远程文件中...")
git_get()
print("拉取远程文件完成!")
print("----------------")
time.sleep(2)
try:
siyuan_program_status = int(is_process_running("SiYuan.exe")) # 查看思源软件是否打开
except:
pass
else:
pass
if 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;
以上。
Windows下自动云备份思源笔记到Gitee的更多相关文章
- 本文讲述下windows下使用rsync备份数据
本文讲述下windows下使用rsync备份数据 需要使用的软件如下: 环境需求: 上海monitor上跑有定时任务计划备份线上数据库,现在需要把上海monitor上的备份数据拉回到179.12数据回 ...
- Pycharm+Python3+python工程打包成exe+在windows下自动定时运行
python3打包成exe---pyinstaller方法:https://www.cnblogs.com/mufenglin/p/7479281.html 按照如上方式打包后,执行dist文件夹(新 ...
- windows下自动删除过期文件的脚本
windows下自动删除过期文件的脚本 前言: 比如日志文件每天都产生,时间长了就会有很大的一堆垃圾.整理一下 定时删除文件的方法. 正文: Windows: 定时删除tomcat日志和缓存.可以保留 ...
- 在linux和windows下自动备份数据库
摘要: 详细介绍在windows和linux下自动备份数据库的过程,希望可以让新手立即上手吧! 本文档内容共分为2大部分:linux和windows Linux和windows都分为:准备工作和操作阶 ...
- windows下自动FTP的脚本
之前发过一篇如何自动FTP的文章,不过当时的脚本都是在Unix下测试通过的.而如果在windows下实现自动FTP的功能,则需要通过如下方式: 1. 建立ftp123.bat文件 open I ...
- windows下mysql增量备份与全备份批处理
win下的全备批处理 批处理用于游戏服务器,经过严格测试,且正式使用,主要用来完全备份数据库,当然.这只是将数备份出来 ,至于如何将备份出来的数据远程传送的远程服务器上可以调用ftp的功能,此脚本并未 ...
- 在Windows下自动运行Modelsim
首先声明:该文章是在刘志伟老师的<Modelsim的Tcl命令>的基础上写的,希望我们能越来越自动化. 1.编写好源文件.包含asyn_fifo.v.fifomem.v.rptr_empt ...
- windows下IntelliJ IDEA搭建kafka源码环境
于kafka核心原理的资料,网上有很多,但是如果不自己研究其源码,永远是知其然而不知所以然.下面就来演示如何在windows环境下来编译kafka源码,并通过IntelliJ IDEA开发工具搭建ka ...
- windows下mysql定时备份
场景:一套B/S小系统,租用了一个虚拟服务器windows 2003,数据库是mysql,做每天的数据库备份 1.关于windows下的定时任务执行 * 命令说明 - /sc 指定计划类型,取 ...
随机推荐
- 解决eclipse中的Java文件,使用idea打开的乱码问题
吐槽: 在克隆一些Github上面资源的时候,使用idea打开,会出现乱码的情况 而使用eclipse打开,这种情况就会消失.「是因为eclipse使用的是GBK编码,idea使用的是utf-8」 这 ...
- 获取Windows正在运行的窗口进程
主要是获取Alt+Tab中展示的窗口 原理主要是获取窗口的样式来判断是否会在Alt+Tab中显示 具体代码如下 /// <summary> /// Alt+Tab 应用 /// </ ...
- Java控制台打印三角形
for (int i = 1; i <= 5; i++) { //最上面先是五个往下一次4.3.2.1 for (int j = 5; j >= i; j--) { System.out. ...
- php统计IP PV和今日访问量统计方法
php引用,在wordpress主题中 $getroot=$_SERVER['DOCUMENT_ROOT']; require_once("$getroot/countstart.php&q ...
- window环境导入odbc数据源
<ODBC指南>中只介绍了window环境如何配置odbc数据源,但是没有介绍如何导入数据源驱动,这里做个补充. 在没有导入数据源驱动之前,按照文档操作是查不到kingbaseES的odb ...
- KingbaseESV8R3对于order by null列的处理
背景 客户遇到一个现象order by 列是null的时候,最后一行总是显示相同的值.不要问我为什么对空值排序,意义何在?客户代码如此,客户不愿意改代码,作为dba大家都懂的.客户认为即使对null排 ...
- PostgreSQL 大对象导出报错问题分析
1.前言 在处理用户问题过程遇到一个问题.用户通过pg_dump导出 bytea 对象时,当行的大小超过 1G时,会报错: [v8r6c5b41@dbhost01 ~]$ sys_dump -t t1 ...
- [DOM]获取元素:根据ID、标签名、HTML5新增的方法、特殊元素获取
目录 [DOM]获取元素:根据ID.标签名.HTML5新增的方法.特殊元素获取 1.根据 ID 获取[.getElementById( )] 2.根据标签名获取[.getElementsByTagNa ...
- c#中容易被忽视的foreach
有句俗语:百姓日用而不知.我们c#程序员很喜欢,也非常习惯地用foreach.今天呢,我就带大家一起探索foreach,走,开始我们的旅程. 一.for语句用的好好的,为什么要提供一个foreach? ...
- Windows 2019通过网页修改域用户密码
对于域用户来说,定期修改密码是必须的.对于没有Exchange的组织,而且经常出差在外的人员,能及时修改密码就变得很重要了. 在Windows 2003的时候有iisadmpwd可以修改.但是这个页面 ...