@scomper

Mac 上文档的自动归集

2017.11.29

刚开始使用 macOS 的时候非常怀念 Windows 平台下的 Total Commander,直到 macOS 多次更新后 Finder 终于堪用,如今 macOS 的文件管理层级主要是三个:文件夹、智能文件夹和标记,文件夹是保存文件的基本容器,标记用来分类文件,智能文件夹则是一种集合,可以用一个或多个条件组合来实现文件的筛选。标签页、标记,结合各种排列方式管理文件方便了很多,便捷性上,还可以把经常访问的文件夹或智能文件夹拖拽到边栏的「个人收藏」。

基于文件夹的文档管理上,基本的思路是按空间、时间、类别三个维度来管理,空间上实现不同设备之间的文档同步,时间维度上把现阶段会用到的文档和远期会用到的数据分离,归档存储上按照类别放在不同的文件夹。照片算是一个特殊的类别,存储上同时用到了 iCloud 和 Google 的云,本地集中在「照片」应用的库当中,照片库容量过大时把历史年份的照片单独存一个库从当前照片库中分离出去。

  • 空间,本地和云端,空间解决两个问题,多设备间的数据交换和当前文档同步;
  • 时间,按时间把文档分为:当下和近期会用的、归档、历史数据三部分,归档数据累计到一定量级以后(磁盘空间不足),按时间把早期的数据归为历史数据保存到外部存储设备;
  • 类别,数据、文稿、照片、资源,因为使用的目的和场景的不同,区分不同类别的文件有针对性的保存。

本地文件的处理主要是基于时间、类别来进行自动化的归集,用到的软件主要是 Hazel、GoodSync。Hazel 小巧简单,常驻后台监控指定的文件夹,按照规则实现文件的移动、复制和同步。GoodSync 是源和目标文件夹之间的计划同步,提供了更多的文件分析、比对和过滤,甚至可以结合远端服务器进行同步。形式上 Hazel 是文件夹监控,而 GoodSync 是文件夹同步。按照使用场景的不同,两者可以结合使用,Hazel 常驻后台,GoodSync 按需触发。

桌面文件的归集

桌面经常被用来作为当前工作内容而交换空间,图片、截图、待修订的文档(邮件、微信中另存到桌面的 PDF、DOC等)。

Hazel 的工作模式是监控文件夹中的变化,然后执行对应的规则,以桌面为例,先需要在左栏添加「桌面」然后再到右侧添加具体的规则。规则可以同步和备份到 Dropbox,这样多台设备之间的文件夹监控模式可以有选择性的一致。

针对桌面的监控这里用到了 3 条规则,超过一定时间后移动桌面图片文件到指定文件夹、超过一定时间后移动文档到指定位置、将标有「个人」标签的文件移动到个人文件夹。

「匹配方式」里定义「全部」满足条件还是满足「任何一个」条件,以移动图片的规则为例,需要同时满足两个条件:添加的时间超过了 10 小时、且文件类别是图片。点击「预览」可以选择一个文件来查看一下规则的匹配是否准确。对于匹配条件的文件会执行定义的操作,如「移动」文件到 Screenshots 文件夹,这个文件夹需要是已存在的文件夹。OmniGraffle 图片处理中曾经提到过,我的 Screenshots 文件夹位于 iCloud 的「文稿」之中,这样便于多台设备访问相同的截图素材。

桌面文稿规则的匹配方式和图片移动规则不同,只需要满足任何一条都符合条件,将类别是文稿、PDF、Text 的文件移动指定位置,从而实现桌面的清爽。实际定义上这里用到了两条规则共同完成判断:2-1 匹配有价值的文件,例如文稿、PDF、Text 等,图片包含在 Document 之中。给文件添加彩色标签,等待后续处理。

2-1 的动作是「继续匹配规则」,表面上看好像什么都没做,但是实际匹配本身也算是一个动作,有了匹配时间后面可以基于这个时间来判断文件添加到桌面已经有多久,文件「匹配时间」这个时间戳比文件自带的「创建时间」「修改时间」更能准确的体现文件停留在一个位置的时间。

2-3 移动文档到指定文件夹,判断规则是最后的匹配时间(也就是 2-1 添加的匹配时间戳)是否超过一定时限,超过了就移动文件,同时可以去掉彩色标签。

执行效果上,桌面上有用的文档自从被添加到桌面后都会自动添加一个绿色标签,隔天就会被自动归集到指定文件夹,图片归集到「Screenshots」 文件夹,文档类的归集到「文稿」。

下载文件夹

下载文件夹也是临时文件集中存放的地方,Time Machine 的设置中还做了排除,结合 Hazel 自动把其中有用的文件自动迁移出去。

Hazel 提供了几个下载文件夹的规则范例,主要目的是示意规则之间的顺序。如图所示里的三个规则:

  • Newly Added Items,标记新添加的文件为蓝色
  • Old Items,如果在文件夹里放置超过4周,就会出现红色。记住规则的顺序是很重要的,这条规则需要在「No Longer New Items」之前出现,因为超过4周的项目也就超过1天,最终将匹配这条规则。
  • No Longer New Items,从文件中删除蓝色标签。这条规则必须在「Old Items」之后出现,否则,这条规则将匹配所有大于一天的项目,而「Old Items」将永远得不到匹配的机会。

文稿文件夹

Hazel 中针对文稿文件夹的规则是把修改日期在 1 个月以前的文档移动到 archive 文件夹归档,从而减少「文稿」文件夹中当前的文件数量。「归档」中存放的是中长期可能还会用到的文件,归档文件按年进行归类,只要硬盘空间允许都可以放在这里。超过 3 年或者更长时间的文档可以考虑迁移动外部的硬盘。

判断文档归集的条件并不复杂,排除文件夹、类别是 Document,限制一下大小就可以了。这个例子里最主要的是创建归档的文件夹分类,所以动作里用到了两个「分类到子文件夹」,一个用来创建一个年份的文件夹,一个创建一个「Document」命名的子文件夹。也就是上图所示的文件夹结构。

子文件夹命名的 pattern 里有很多选择,可以用日期、文件的扩展名、来源文件夹、文件类型等等。考虑到过于细致的子文件夹分类并不利于后续文件的查找,所以只采用的年份的方式,为了只用年做文件夹名称,修改了日期格式(点击 date modified 旁的箭头)。

文稿中其他文件的归档用了另一个规则来完成,同样是按年份归集,但是不用再创建二级子文件夹,以便和 Document 文件区分开。如此一来实现了对「文稿」中所有文件的自动归档和分类,按年存储。

截图素材文件夹

文稿下的 Screenshots 是存储博客配图和截图的地方,在 Hazel 中定义了两个规则来归档其中的图片,只在 Screenshots 中保留近期的图片,便于识别和采用。 archive 文件夹中单独创建了一个 Screen-shots 来归集超过一定时间的图片。

将修改日期超过 20 天的图片移动到 Screen-shots,条件只需要定义一个类别和最后修改时间的范围。

来自 iPhone 的截图一般只做素材使用,所以用完后可以在更短的时间周期内归档,所以定义了一个针对 IMG_ 图片的判断,归档时间设定的也更短。

iPhone 上的截图用到了 Workflow 的自动化流程,统一保存到 iCloud 下的 Workflow 文件夹,配套的,Mac 上用 Hazel 监控 Workflow 文件夹,发现里面有文件直接移动 Screenshots,实际效果就是,iPhone 上运行 Workflow 的动作,很快截图就会出现在 Screenshots 文件夹。

Workflow 文件夹监控的例子也给了我们一种思路,即便某些应用不支持 iCloud,我们也可以用 Hazel 把它们的文件备份到云端。例如,定期备份 OmniGraffle 的型版文件。

  • 先在 iCloud Drive 里新建一个 OmniGraffleStencil 文件夹来存储 Stencil 型版文件;
  • Hazel 中添加对 OmniGraffle 型版文件夹的监控(OmniGraffle 型版文件夹的位置埋的比较深,可以在 OmniGraffle 的型版文件列表中右键「在 Finder 中显示」以此来定位);
  • 添加规则同步 OmniGraffle 型版到 iCloud 的指定文件夹;


Hazel 的同步实际是单向的复制文件到目标地址,不会反向同步改变。这样设计的目的应该是为了避免出现死循环。另外,Hazel 的监控判断比较简单,子文件夹中的文件如果发生变化,会同步整个子文件夹而不是单个的文件。所以作为一种备份方式,周期可以长一些,以「最后匹配时间」作为判断条件。

有人肯定会问,能不能再从 iCloud 的 OmniGraffleStencil 文件夹再把备份的文件同步回来呢,创建一个监控 OmniGraffleStencil 的规则,目标文件夹是 OmniGraffle 的型版目录。首先这么做是可以的,但是不建议使用 Hazel 来完成这个工作,因为 Hazel 对子文件夹的判断比较初级,而且复制文件前会先删除目标文件夹,所以会存在一定的风险。还有一个考虑就是,Hazel 的规则是一致在后台运行的,这种往复的操作一旦条件没设定好会陷入死循环。

文件夹同步 GoodSync

Hazel 用来自动的归集和备份,不适合用来实现文件夹之间的同步,文件夹之间的同步应该使用 GoodSync。定期运行 GoodSync 来实现文件夹和文件夹,一台设备和另一台设备文件夹之间的同步。

以 OmniGraffle Stencil 文件夹为例,打开 GoodSync 创建一个同步任务,直接在 Finder 中拖拽文件夹到 GoodSync 顶栏的同步文件夹区,这样操作比点击顶栏的同步文件夹设定更快速。GoodSync 目前的版本还不能直接显示 iCloud 文件夹,如果按路径一层层找太费劲。

同步前,先点击工具栏的「分析」,检查具体的分析结果,对照无误后再进行点击工具栏上的「同步」按钮同步。不需要同步的文件排除既可以到「选项」中添加过滤器,也可以直接在文件上右键来排除,排除的文件标记是竖等号。

GoodSync 的另一个特点是支持网上邻居以及和主流云存储之间的同步,基于这个特点可以用来同步两台设备的一些配置,例如 Rime 的输入法配置,Rime 自带的 Dropbox 同步只同步用户词库和单向备份 yaml 文件,如果要完全同步文件夹中的内容需要用到 GoodSync。


在 Net Shares Folders 中建立和另一台设备的连接,指定文件夹。也可以如同上面的例子一样,先用 Finder 访问另一台设备,然后直接拖拽文件夹到顶栏的同步文件夹位置。

GoodSync 也有自己的云服务,不过在文件管理的整体规划上,更倾向于使用 iCloud、Dropbox、以及 Google Drive 这些大厂的服务,稳定性和安全更有保障。GoodSync 在使用定位上作为一个同步的辅助工具,也不需要开机启动常驻后台,Things 中添加一个周期提醒,定期的打开跑一次文件夹的同步。


附件1:Hazel 的中文语言包 Dropbox 下载
Hazel 语言包的使用方法(语言包针对的是 Hazel 4.2.2 制作的,请注意版本匹配):

  • Finder 定位到 /Library/PreferencePanes/ 找到 Hazel 的主程序;
  • Hazel.prefPane 程序上右键「显示包内容」,展开文件夹,将附件解压出来的 zh-Hans.lproj 文件夹复制到 /Contents/Resources/之中即可。

附件2:Hazel 规则共享hazelrules-Share.zip
解压后导入 Hazel,需要先添加监控文件夹才能导入对应的规则。

--「壹页单章」会员计划 --

Comments
Write a Comment