![如何在 Linux 和 Windows 中查看 Mac OS Catalina 创建的“照片库.photoslibrary”中的照片](https://linux22.com/image/1629700/%E5%A6%82%E4%BD%95%E5%9C%A8%20Linux%20%E5%92%8C%20Windows%20%E4%B8%AD%E6%9F%A5%E7%9C%8B%20Mac%20OS%20Catalina%20%E5%88%9B%E5%BB%BA%E7%9A%84%E2%80%9C%E7%85%A7%E7%89%87%E5%BA%93.photoslibrary%E2%80%9D%E4%B8%AD%E7%9A%84%E7%85%A7%E7%89%87.png)
我有一台 Mac。我还有一台 NAS。
我使用 rsync 同步文件(以正确的方式)。同步后,我可以看到“Photos Library.photoslibrary”被 Linux 识别为文件夹。
[i@one Photos Library]$ l
total 20
drwxr-xr-x 7 i i 4096 Feb 9 03:15 Photos Library.photoslibrary/
-rwxr-xr-x 1 i i 6148 Aug 2 15:32 .DS_Store
[i@one Photos Library]$ cd Photos\ Library.photoslibrary/
[i@one Photos Library.photoslibrary]$ d
29M database
44K external
3.3G originals
11M private
639M resources
3.9G total
[i@one Photos Library.photoslibrary]$ cd originals/
[i@one originals]$ l
total 200
drwxr-xr-x 2 i i 12288 Jul 31 20:35 0/
drwxr-xr-x 2 i i 12288 Aug 1 11:46 1/
drwxr-xr-x 2 i i 12288 Aug 1 11:46 2/
drwxr-xr-x 2 i i 12288 Jul 31 20:35 3/
drwxr-xr-x 2 i i 12288 Jul 31 20:35 4/
drwxr-xr-x 2 i i 12288 Aug 1 11:46 5/
drwxr-xr-x 2 i i 12288 Jul 31 20:35 6/
drwxr-xr-x 2 i i 12288 Jul 31 20:35 7/
drwxr-xr-x 2 i i 12288 Jul 31 20:35 8/
drwxr-xr-x 2 i i 12288 Jul 31 20:35 9/
drwxr-xr-x 2 i i 12288 Jul 31 20:35 A/
drwxr-xr-x 2 i i 12288 Jul 31 20:35 B/
drwxr-xr-x 2 i i 12288 Jul 31 20:35 C/
drwxr-xr-x 2 i i 12288 Jul 31 20:35 D/
drwxr-xr-x 2 i i 12288 Jul 31 20:35 E/
drwxr-xr-x 2 i i 12288 Jul 31 20:35 F/
[i@one originals]$ l 0/
total 142084
-rw-r--r-- 1 i i 356702 Feb 10 04:02 0025DD5C-1E70-4F85-938B-3EA0629FDE0F.jpeg
-rwxrwxrwx 1 i i 2034724 Aug 1 02:43 00486A0A-D20C-4A77-9EA7-16EB592913C1.jpeg
-rw------- 1 i i 4769392 Feb 9 03:26 006C3459-F1FA-4A55-878A-6FB59D1406F9.jpeg
-rw-r--r-- 1 i i 537983 Feb 10 03:53 00755EF5-CDA6-4A2E-B436-0B026D1B2F2C.jpeg
-rwxrwxrwx 1 i i 2072943 Jul 31 23:37 00923247-B742-4EC9-ABB0-C3CFF51D13A7.jpeg
... ...
所有实际照片都在文件夹中originals
。但问题是:
- 每张照片的文件名都是UUID,而不是实际的文件名。
- 我的照片库有一个结构。它有文件夹、相册。但这只是文件夹 0 到 F。
我尝试从 打开数据库Photos Library.photoslibrary/database/Photos.sqlite
,发现其中有很多值:
ZORIGINALFILENAME
ZMASTERFINGERPRINT
ZFILENAME
ZCLOUDASSETGUID
ZUUID
ZIMPORTSESSIONID
... ...
我想我现在接近答案了。但我仍然无法将它们链接在一起以找到文件名。而且我找不到结构信息。
是否有脚本或其他东西可以将 .photoslibrary 转换为普通文件夹。或者任何熟悉数据库的人可以帮助我理解它,以便我可以自己编写转换脚本?
答案1
在 Catalina 中,表 ZGENERICASSET 具有列 ZDIRECTORY 和 ZFILENAME,表 ZADDITIONALASSETATTRIBUTES 具有列 ZORIGINALFILENAME 和 ZTITLE。
ZADDITIONALASSETATTRIBUTES.ZASSET = ZGENERICASSET.Z_PK
使用 SQL 查询将原始文件名(ZORIGINALFILENAME)和您可能通过照片中的获取信息(ZTITLE)添加的任何标题映射到 ZDIRECTORY(文件夹名称 0-9,AF)和 ZFILENAME(图像文件的长字符串 GUID 名称)。
Catalina 的 ZGENERICASSET 在 Big Sur 被称为 ZASSET。
答案2
.photoslibrary 结构确实是一个文件夹。macOS 将具有该扩展名的所有内容视为文件。它对应用程序也采取同样的做法,它们实际上也是文件夹 - 普通用户看不到“内容”,但在 Mac 上可以通过右键单击并选择“显示包内容”来查看。
无论如何 - 您的照片...
因为对于 Mac 用户来说,通过照片应用程序正常查看的可见结构是由相当复杂的 SQL 数据结构管理的,所以最好避免在任何其他操作系统上查看这些照片。
你真正需要的文件夹是查看照片的原始版本,而不是排序或编辑后的版本大师文件夹。然后按日期细分,以年/月/日/IDtag/ 为单位,因此要浏览所有项目需要很长的路径,但这是所有原始文件的“真实”位置。
顺便说一句,“originals”文件夹是旧结构的遗留物,可能是 iPhoto 或 Aperture 的遗留物。
我猜想不用多说,您确实不想更改此结构的任何部分,只想观察。