APFS格式对比NTFS都有很多先进的特性,其中快照(Snapshot)就是笔者非常喜欢的功能之一。然而,macOS本身似乎并不允许用户直接创建APFS快照,只能查看信息、重命名或者删除,本地硬盘Macintosh HD的快照也只能通过时间机器(Time Machine)来创建,而且因为时间机器的设计,你还必须添加一个专门用来备份的硬盘才能激活自动创建本地快照的功能,而且默认情况下移动硬盘即使是APFS也是不能创建快照的。
在搜寻了很多资料后,笔者将目光重新落回了时间机器,原因很简单,目前来看时间机器是普通用户唯一能接触到的有权创建APFS快照的工具。一次偶然的意外,让笔者发现时间机器默认的“排除列表”里的其它外置硬盘,居然是可以移除的。于是笔者赶紧做实验,将APFS移动硬盘从排除列表移除后再立即备份,结果使用磁盘工具(Disk Utility)查看移动硬盘时赫然第一次多了一条由时间机器创建的快照!
虽然给移动硬盘创建快照的目标已经完成了,但笔者并不想每次都需要进系统设置(System Settings)来调整相关设置,更希望时间机器仅仅只创建快照、而不要还备份到其它硬盘。要想实现这些效果,显然再依赖GUI的时间机器是不可能了,所以笔者将目光盯向了时间机器的命令行工具tmutil和配置文件/Library/Preferences/com.apple.TimeMachine.plist。
经过笔者的反复尝试,使用tmutil snapshot指令可以绕过所有系统设置直接手动创建APFS快照,而且除了本地Macintosh HD以外,如果有已经连接的APFS移动硬盘、并且硬盘文件系统的UUID在配置文件的子项IncludedVolumeUUIDs里,那么对应的APFS移动硬盘也会被创建一个快照,并且也明确标注为时间机器创建的,效果和本地的时间机器快照一模一样,也可以在磁盘工具中很方便地管理和使用。
到这里,最后剩下的问题就是如何编辑plist配置文件了。macOS系统的plist文件都有严格的权限、没法直接进行修改,如果尝试删除还会马上被系统自动重新写入,如果尝试复制到其它目录修改好后再直接复制回去也是无效的,而且这些plist文件本身还是二进制的,根本没法直接编辑修改。
经过笔者一系列摸索,目前最可行的方案如下:首先将plist文件复制到自己的其它目录,比如~/Downloads,然后使用Xcode打开,将自己APFS移动硬盘的UUID写入到IncludedVolumeUUIDs里,保存后一定要以root权限复制回去,也就是sudo cp ~/Downloads/com.apple.TimeMachine.plist /Library/Preferences/,成功后可以尝试将文件删除,如果系统自动重新写入的还是你修改后的文件,那么直接重启Mac就全部大功告成了。