wshuyi的个人博客分享 http://blog.sciencenet.cn/u/wshuyi

博文

如何用 Python 增量备份 Roam Research 笔记图片?

已有 1424 次阅读 2020-5-23 09:49 |系统分类:科普集锦| Roam Research, Python, 备份

消除后顾之忧,轻松输入卡片笔记。

题图:Photo by Markus Spiske on Unsplash

前些日子,我用视频的方式给你介绍了 Roam Research 这款工具。如果你还没有来得及看,这里是链接

视频发布后,有的朋友积极地尝试使用,然后给我的反馈是这个样子的。

我看到以后,为他能够找到一款心仪的笔记工具,提高输出效率而感到高兴。

也有一些朋友和读者,私信和后台留言不断地在问我:

王老师,这款应用靠谱吗?能长久运营下去吗?

在上面写的东西是否安全?会不会丢掉资料?

在线的东西我可不敢轻易使用啊。它有桌面端下载地址吗?

……

我一一答疑,弄得焦头烂额。

后来实在答不过来,只好找了个有桌面端的类似产品。遇到谁再问上面的问题,就直接把链接发过去。

我这儿有些劳动超负荷。但并不意味着,读者们提的这个问题不重要。

我们在使用一款新的工具,尤其是笔记工具之前,首先得保证安全

毕竟这里面记载的,是我们很重要的思考内容和输出成果。笔记工具号称自己是「第二大脑」。想想看,大脑重不重要?要不要好好保护?

如果笔记不能够保证安全,记着记着就不见了,那感觉肯定很糟糕。

我就有过惨痛的亲身经历

在高一暑假的时候,我曾经发奋写过一本小书,还是章回体的。写了十几章的时候,突然间硬盘坏了。那一刻,我头脑是空白的。

跑到电脑城去修理,人家告诉我那叫「引导区划损」,没治。于是,资料再也没找回来。

更糟糕的是,我没有备份。一章都没有。

那儿之后,我知道了备份的重要性,一直都注意备份操作。

那么说到 Roam Research 这款在线应用,它的备份功能做的怎么样呢?

我觉得做的是很好的。

Roam Research 的作者在设计之初,就定下来一个基调——他不准备把用户强制留在这里

据他说,有一些同行做出来的应用,总是恨不得让用户来的时候很方便、门槛很低,但是将来想转移出去,会很费劲。

这或许是一种很高明的经营策略,但是 Roam Research 的作者不愿意做这样的事情。

他希望的,是留在平台上的用户,都是因为真正喜欢使用,而不是跑不掉了

所以,在导出格式的选择上, Roam Reserach 非常慷慨地提供了 Markdown 格式。

Markdown 格式非常简单,容易上手。我之前给你介绍过如何用它写论文做幻灯,你不难了解到它的易用性

因为简单易用, Markdown 在很多笔记工具上,都有良好支持。例如 Ulysses, Gingko, Bear 等,以及在这篇教程中给你介绍过的新晋免费学术写作利器,都可以使用它。

那么,是不是说有 Markdown 这样的导出格式,你的所有资料就都安全了呢?

如果你往 Roam Reserach 里边儿输入的只有文字,那基本上差不多了。但是这里面我们不能忽略笔记的一个重要组成部分,那就是图片

我不知道你记笔记怎么样,反正我是经常需要使用插入图片功能的。

比如说我在这里给大家做一些教程,许多都要演示操作和结果。那么我在记笔记的时候,就有意识地要把当时的一些截图记下来。这样我组织文章的时候,就可以拼接笔记卡片,非常方便地把内容整合起来,输出成文章级别。

如果这时候,让我回头去重新制作或者找寻图片,那我的写作成本,就会变得非常高。

当我使用一些文献阅读工具时,经常在上面写写画画。我会把这些潦草的文字作为图片保存下来。

在 "how to take smart notes?" 这本书中,这些内容属于第一遍笔记。可以在不打断阅读心流的时候,把要点抓取下来,这样在后面整理的时候,你才能更加方便和省力。

因此我在这里面会上传大量的图片到 Roam Reserach 。可是问题在于这些图片是怎么样存储的呢?如果你在导出的 Markdown 文件里面查看的话,会发现图片的链接都是这个样子的:

这个链接形式告诉我们, Roam Reserach 图片存储的位置在 Google 云上。它的名字叫做 Cloud Storage for Firebase

从理论上说,这服务的安全性和可扩展性挺好的。可是有一个小问题。

你存储的时候,用的不是你个人的 Google 云账户进行访问控制,而是 Roam Research 的账户。你上传下载都没问题。但是如果开发者的账户出了问题,例如被人攻击窃取,那你的这些图片随时可能被骇客删除掉。

或者如果 Google 云服务器发生问题,你的图片也会烟消云散。虽然后面这种情况的概率很低。

尽管听起来,确实有点儿像杞人忧天。不过小心驶得万年船。做个备份不是坏事儿。随着存到 Roam Reserach 上的图片越来越多,我觉得还是有必要的在本地留一个备份。

方法并不难,找到所有的云端图片链接,备份到本地的一个文件夹。

更保险的方式,是把这个文件夹放到云同步平台,例如 Dropbox 或者坚果云上面。同一份图片,你于是就有三个副本:一个在Google的云上,一个在你本地的硬盘里,还有一个在这个第三方的云。

那么,假如这三个位置的副本都同时都毁坏怎么办?

真到了发生这种事儿的时候,估计是小行星又来光顾地球了。听我一句劝,笔记别要了,逃命要紧。

玩笑归玩笑。上面的流程,听起来并不复杂,可要真的是执行起来,也挺麻烦的。

解压一堆 Markdown 文件,找到所有的图片链接,然后一一下载……

绝对不能手动操作啊!

咱们得用脚本,自动化执行。

Python 是咱们的好帮手。

你可以让 Python 去循环往复,找到这些链接,一一帮你下载下来。

况且,你也不需要一个个 Markdown 文件里面去找链接。那多麻烦!

Roam Reserach 还提供了一个选项,就是把所有笔记,导出成为 JSON 格式。这样一个文件里面,就包含了所有的图片链接。岂不妙哉?

但是很快,你又高兴不起来了。

随着不断地输入笔记到 Roam Reserach ,你的图片备份就不全了,需要更新。

每一次为了完整备份图片,你还得从头做一遍吗?

这太烦人了。今天我用脚本下载 600 兆的图片,等了好几十分钟。要是每次备份都得花这么长时间,而且每次时间都变得更长,那谁受得了?

当然了,我们不需要把自己逼到这样的窘境。

因为你不必每次都下载所有的图片

解决的办法,是增量备份。就是每一次备份,只把那些之前没有备份的图片文件专门儿挑出来,下载。其他的略过就好

为了做到这个事儿,你需要有个记录表。这个表格记下你已经下载了哪些文件,存在了哪里。

每次新下载之后,你都更新这个记录表。这样,你就不会再已经下载过的文件上耽误时间了。

为了说明这个过程,我手绘了一张流程图。

估计世界上你也找不到第二张这么丑的流程图了。哪位 Visio 用得好?欢迎帮我把它规范绘制出来。谢谢!

不过,能说明大意就好嘛。

在这个图片备份脚本中,主要用到以下的这几个软件包。

一个是 requests ,这个软件包是负责用来从网上下载东西的。

一个是正则表达式包 re 。如果你对「正则表达式」这个名词印象不够深刻了,建议复习这篇《如何用 Python 和正则表达式抽取文本结构化信息?

还有一个包就是 JSON,他帮你做的,是读写下载记录。

这个记录,除了实现咱们提到的增量备份,避免每次重复做无用功之外,还有一个重要用途。将来如果真的发生资料丢失,或者你不准备再使用 Roam Reserach 了,可以利用它替换你所有的 Markdown 文件。于是你的 Markdown 文件里面,就都是实打实的本地图片链接了。

执行起来的效果,是这样的。

我把这个脚本放到了 Github 上,你可以在我的公众号玉树芝兰后台回复「imgbak」,直接查看源码和下载使用。

这样一来,你就有了一个可以让你踏实安心的 Roam Reserach 备份工具。从文本到图片,全都备份在本地。

而我,也从此可以避免回答「 Roam Reserach 到底可以存活多久」、「在线笔记靠不靠谱」之类的问题了。善哉!

祝你记笔记的过程,变得更加轻松愉快!

喜欢别忘了点赞,并及时写下你的感受与评论

也欢迎你转发给亲朋好友,让他们也加入咱们的讨论中来。

别忘了关注我的专栏“玉树芝兰”,以免错过更多的更新推送。

延伸阅读

你可能也会对以下话题感兴趣。点击链接就可以查看。




http://blog.sciencenet.cn/blog-377709-1234519.html

上一篇:大一就开始准备考研,合适吗?
下一篇:如何用 liquidtext 高效阅读分析文献?

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2020-10-26 10:09

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部