如何让macOS更新Dropbox文件的文件大小显示?(已证实可行)
macOS Monterey下Dropbox云文件大小同步触发函数问题
大约一年前苹果修改了Mac(Monterey系统)上云目录的处理机制,此前将Dropbox挂载为~/Dropbox时,终端执行ls -l能查看所有文件真实大小,但现在绝大多数文件显示为0字节,Dropbox客服仅归因于苹果改动,未给出有效解决方案。
关键现象
- 在终端或自行编写的C程序中,调用
open()、fopen()、stat()、fstat()等函数访问文件时,会判定文件为空 - 执行
open foo.txt命令用TextEdit打开Dropbox中的文件后,不仅TextEdit能读取真实数据,后续ls -l、open()等工具和函数也能获取真实文件大小,且该状态重启后仍保留——说明TextEdit触发了macOS向Dropbox请求更新文件信息的操作
核心需求
需要找出C程序中可触发文件信息更新的函数(比如TextEdit是否使用了特殊的open变体?),找到后可编写工具批量更新所有文件的信息。
DTrace捕获的相关系统调用列表(仅保留疑似相关项,数字为调用次数)
| 系统调用 | 调用次数 |
|---|---|
| __mac_syscall | 163 |
| access | 12 |
| faccessat | 3 |
| fcntl | 4 |
| ffsctl | 9 |
| fgetattrlist | 1 |
| fgetxattr | 4 |
| fsgetpath | 28 |
| fstat64 | 21 |
| fstatat64 | 3 |
| fstatfs64 | 9 |
| getattrlist | 118 |
| getattrlistbulk | 2 |
| getdirentries64 | 6 |
| getxattr | 11 |
| guarded_open_np | 1 |
| ioctl | 1 |
| lstat64 | 2 |
| mmap | 41 |
| open | 28 |
| open_nocancel | 17 |
| stat64 | 37 |
| statfs64 | 10 |
| sysctl | 8 |
| sysctlbyname | 1 |
内容的提问来源于stack exchange,提问作者Stan Sieler
相关产品推荐
相关产品推荐

