2

iCloud Drive和 OneDrive for Mac都支持远程文件(或OneDrive 所称的“按需文件” )。

  • 这些文件出现在 Finder 中,并且表现得像真实文件(具有奇怪的快速查看行为)。
  • 检查员显示他们的真实大小加(4 KB on disk)或相似。

还:

  • 终端似乎不了解 iCloud 远程大小:
: ~/Library/Mobile Documents/com~apple~Preview/Documents
$ ls -lh
total 24
-rw-r--r--@ 1 REDACTED  staff   157B Apr 28  2014 .2AM.png.icloud
-rw-r--r--@ 1 REDACTED  staff   6.0K Sep 30  2018 .DS_Store
  • 但它理解 OneDrive 的(文件显示0 bytes on disk在 Finder 中):
: ~/OneDrive/Pictures/Drawings
$ ls -lh
total 24
-rwxrwxrwx@  1 REDACTED  staff    11M Apr  5  2019 MMM.kra*

带有云图标的 iCloud Drive 屏幕截图和

令人失望的是,我在网上找不到有关这些文件的任何信息。官方的Apple 文件系统参考似乎没有为此显示任何明确的端点。

  • 它们是如何工作的?
  • 这是公共 macOS API 还是 APFS 的功能?这是否依赖于 APFS?
4

2 回答 2

1

看起来他们正在使用稀疏文件(APFS 的一项功能)来显示大小而不会占用空间。

为了按需填充文件,他们使用扩展文件属性。

在您的文件上尝试此命令以查看更多信息:ls -l@

我还没有看到任何关于如何在任何地方使用它的文档,但显然有一个属性可以设置为在另一个应用程序打开文件时获取回调。这与 OneDrive 使用的 com.apple.fileutil kext 结合使用。Microsoft 必须具有特殊访问权限。

于 2020-05-18T18:14:58.517 回答
0

处理所有这些魔法的是文件协调。这些文件被标记为无日期占位符,并且 filecoordinationd 能够通过从 iCloud 检索它们来在访问时“实现”它们(以及在它们被保存或“驱逐”时处理相反的方向。

/usr/bin/fileproviderctl 中有一个 Apple 实用程序,可用于进一步探索。(例如 fileproviderctl materialize..)

稀疏文件是完全不同的:它们用于填充零的文件,然后它们可以占用更少的空间,因为它们的零块不占用空间。

参考:NewOSXBook.com,第二卷。

于 2020-09-08T16:45:34.190 回答