第 1 种方案最常见,比如 Evernote, OneNote 等都采用这种方案,这种方案自然有很多优点,但也有一个明显缺点:无法与其他软件合作。比如,如果用 Evernote 来储存图片,就无法用看图软件直接看图,也无法用修图软件直接修图。
第 2 种方案也能偶尔见到,一般懂编程的人自己想写一个软件来管理本地文件,很可能采用这个方案。
我现在就是想做一个本地的 文件管理工具, 具体来说就是文件的标签管理工具。本该采用第 2 种方案,但是我突发奇想,能不能采用最容易被否定的第 3 种方案?
第 3 种方案由于会产生大量小文件,因此被人讨厌。但当我真的去把它做出来的时候,经过试用,发现它也有很多好处啊!
代码: https://github.com/ahui2016/bijibiji-project (水平有限,请多包涵)
1
aoaoho 2018-08-09 14:20:00 +08:00
开放式(非私有格式&工具)的文件管理方式也是我特别看重的,我尝试过一些方案,都没有达到预期,包括现在在用 DEVONthink。
楼主有没有用过 DEVONthink (主界面见图 1 )?说几点供你参考: 1. 它支持多库,每个库其实就是一个文件夹,在软件内创建的文件会按照扩展名(先不评价这种方式)放在文件系统内(见图 2 ); 1. 文件在软件内也有选项供使用外部应用打开; 1. 它其中一个功能是,可以把操作系统的文件夹「挂载」到软件内(见图 1,中栏,蓝色的 Blog 文件夹),但索引数据是存在当前所在库的索引文件内。当挂载的文件夹 /文件被外部应用增删改后,它实时监测,并及时更新索引数据; 1. 它支持很多种类型的文件预览和处理,同时在标签、标注、搜索方面都不错。 |
2
imn1 2018-08-09 14:28:22 +08:00
我用方案 3 自写脚本,不过仅自用
这个方案对媒体文件管理更有用 |
3
SuperMild OP @aoaoho 感谢提供参考。
文件管理、知识管理真可谓众口难调,要达到真正好用,需要做非常多、而且非常考虑细节的功能才行。DEVONthink 已经做得很不错,对于如何把操作系统里原有的文件整合进来,也有不错的解决办法。 比如监控文件变动,自动更新索引,这个功能很不错,也符合很多用户的需求。但是,对于我自己来说,我希望减少自动、减少智能,尽量把更多技术细节呈现给用户,让用户知道发生了什么。所以现在我的解决办法是做一个扫描器,让用户手动扫,如果有文件被移动过,就通过两个列表来反映这个事实:1.在旧的位置文件不见了 2.在新的位置出现了新的文件。 DEVONthink 属于我说的第 2 种方案,它对于小仓库移到大仓库、不同用户不同电脑之间的分享、局部上传到网盘等等,都有着天然的难点需要攻克。 而且,DEVONthink 也属于 “掌控力很强的老管家”,很多事情它都可以帮忙安排得很好,但是总觉得它站在我和数据之间、站在我和我的文件之间,让我离我的数据很远,一旦全面拜托它来管理文件,我的迁移成本就会很高。 而第 3 种方案,每一个文件都是独立的,每一个文件都是自由的,没有老管家掌控一切,而是有很多个谦卑的小仆人(一堆零散的脚本程序),这些程序每个都很小,源代码是容易理解和掌控的,所实现的功能也很有限。 用着这些简陋的东西,反而让我内心特别安稳。 |
4
SuperMild OP @imn1 能不能分享一下?我觉得方案 3 的生命力在于,如果有人也用这种方案,那就可以迅速参考借鉴。而且可以针对不同种类的文件来定制特殊功能。
|
5
imn1 2018-08-09 16:26:15 +08:00
@SuperMild
分享就算了,不是什么好东西,当初写的时候就是想到什么就加什么,很多路径都直接写到代码里面,现在都懒得改了 媒体文件都在 win 下面,所以用 powershell 写的,而且 powershell 写 GUI 比较方便 GUI 主要是为了拖放,处理多个文件,尤其路径不同、或者文件名有日韩字符时,拖放还是方便些 可以说一下大致思路: 1.把真实文件扔到带编号 id 的文件夹,或者文件名本身带 id 我自己准备了一堆正则模板,方便编号和改名,把流水 id 加上去 2.我习惯用 csv,json 不太熟,而且文本编辑器(如 emeditor)打开 csv 很直观,有时一些微改动不需要还上脚本改 3.增删改查都是小事,也不用说了 4.做这个最主要是两个 一个是入库(csv)的工作,利用文件名以及一些预设正则方案,把必要可知信息写入 csv,当然不全,需要后期对字段编辑,但基本上给了 id 后,真实文件就不怎么需要动了,方便固定路径 二是出库,既然入库就已经固定路径,读取自然也不应随意变更,所以我全部采用虚拟路径,主要是用不同的 tag 写 junction 或者 symlink,前者有个好处是无需 admin 权限,后者需要提权才能生成,虚拟路径自己怎么命名都没所谓,完全不影响实体文件,还可以多对一,同一个 id 在不同分类的虚拟路径都有软链 有些媒体文件我会搜索 tag 后,生成 playlist 让播放器直接打开 以前试用过 tagspace,不过免费版还是比较弱 而且这些工具对我有一点是无法用下去的:图片管理,我的图片千万级,这些工具全部默认是文件管理,而我对图片管理只需要目录管理就够了,采用文件级 tag 的我用过 N 个的全部崩溃 知识管理我觉得也是目录 /文件夹管理比较好 目前没找到一个可以左边树目录,右边打开预览或浏览的工具,例如 mhtml,还是要在 chrome 打开 不过相信一个工具要支持这么多格式还是比较难 |
6
my101du 2018-08-09 16:33:29 +08:00
Eagle 应该就是这么做的。添加一个库后,会把图片全部存到这个库里,每个图片一个描述文件,打开看就是 json,描述了它的一些 meta 信息.(色调,tag,宽度什么的)
对它的索引感到好奇,毕竟这些描述文件分散在多个目录里,搜索的时候怎么跨这么多目录来高效检索数据呢? |
7
loveour 2018-08-09 17:35:26 +08:00
我最近也在考虑写一个文件管理软件,不过我是为了超过 100TB 的媒体文件,自从 4K 开始普及硬盘空间明显吃紧。第三个方案优点很多,但是描述文件如果和媒体文件放在一起,会不会显得太杂乱?就像来以前的 SVN,会在每个目录下面生成一个.svn 的文件夹,还是说我的理解有误?而且,我要管理的还有照片库,文件量会很大。所以我大概会采用第二个方案,用数据库存储描述,做一些方便迁移的设置比如导入导出到 csv 或者 json 的 txt,以及监控文件夹变动。主要还是我的需求不一样,我没有频繁移动文件的需求,因为我的仓库目录是相对固定的,移动会很少,要发生也会是批量的。想了想,与其说我想写的是文件管理软件,不如说是媒体管理软件吧。用过几个,总觉得不是特别合自己的意。
|
8
SuperMild OP |
9
SuperMild OP @loveour 显得杂乱是个大缺点,但是我移动的需求比较大,只能忍受这个,一般的话第 2 种方案就很好。
你的文件虽然体积大,但个数其实不多,这种情况下用第 3 种方案效率也很高,第 3 种方案只怕数量多,不怕体积大。就是一堆描述文件会很乱是真的,我感觉一般人都忍受不了这个缺点。折中一下改成 .svn 或 .git 那种形式也可以考虑。 |
10
tinywhale 2018-08-09 18:03:44 +08:00
描述文件.... 其实操作系统早就有了 Thumbs.db .DS_Store,可以在它的基础上加内容
|