繁体   English   中英

使用磁盘仲裁框架时,是否有可靠的方法知道卷是时间机器卷?

[英]Is there a reliable way to know a volume is a time machine volume when using the disk arbitration framework?

我正在开发OSX应用程序,该应用程序除其他外还显示已安装的卷(显示/消失)。 我使用磁盘仲裁框架来做到这一点。 当我将计算机连接到已配置为时间机器备份的网络驱动器时,将出现一个名称为“ timemachine”的卷,即出现的设备的CFDictionary是这样的:

{DAVolumeMountable = true,DAVolumeNetwork = true,DAVolumeName = timemachine,DAVolumePath = file:// localhost / Volumes / timemachine /,DAVolumeKind = afpfs}

我不希望该卷显示在应用程序的UI中。 我可以使用什么标准来知道这确实是一个时间机器量,将其排除在外? 仅使用名称或路径似乎很奇怪。 从理论上讲,格式化为名称为“ timemachine”的驱动器是否不会安装在相同的名称/路径下?

任何建议表示赞赏。

我找不到识别Time Machine卷的API。 您可以使用destinationinfo动词调出tmutil程序。 我还可以在Time Machine卷上看到诸如“ .com.apple.timemachine.donotpresent”之类的文件,尽管这依赖于未记录的实现细节。

顺便说一句,用户仍然可以正常使用Time Machine音量。 至少有一个本地人可以。 他们可以浏览到该文件,并在其上备份其他文件。 显然,他们不应该在驱动器发生故障的情况下放任何东西,以免丢失。

如果只想显示与Finder中存在的卷相同的卷,则建议使用NSWorkspace及其NSWorkspaceDidMountNotificationNSWorkspaceWillUnmountNotification通知来了解何时安装和卸载卷。 NSVolumeEnumerationSkipHiddenVolumes一起使用-[NSFileManager mountedVolumeURLsIncludingResourceValuesForKeys:options:] 您可能也想将-getResourceValue:forKey:error:NSURLVolumeIsBrowsableKey一起使用,因为我不确定non-browsable是否与hidden是同义词。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM