如果我从 NTFS 分区压缩文件夹,它可以在无法读取 NTFS 文件系统的设备或操作系统上提取吗?
更一般地说,zip 文件是否以某种方式保留解压文件夹的文件系统?
答案1
如果我压缩 NTFS 中的文件夹,那么该 ZIP 文件是 NTFS 吗?
不。Zip 存档中的“文件系统”是......Zip,字面意思。
如果我从 NTFS 分区压缩文件夹,它可以在无法读取 NTFS 文件系统的设备或操作系统上提取吗?
是的。任何支持 Zip 格式的软件都能够提取任何 Zip 档案。
当归档一个文件时,各种文件系统级元数据不会被检索为单个不透明的数据块;归档程序会根据需要检索各个字段(例如,它复制文件的实际内容,然后进行一次系统调用来检索创建/修改的时间戳,然后进行另一次系统调用来检索隐藏/只读标志......)并以它想要的方式存储它们。
因此,虽然档案库可能会从原始档案库中复制一些(甚至大部分)文件系统元数据和属性,但这些属性在档案库中存储的确切方式是定义的按档案格式– 不是由原始文件系统。
即使存档确实存储了一些文件系统特定的参数,在大多数情况下,程序也可以直接跳过它们不知道如何处理的字段。例如,如果您在 Linux 上创建一个 Zip 文件,它将存储Linux 特定的文件权限字段,但该文件仍可在 Windows 上提取 - 提取器将忽略该字段。
同样,如果您在 WinRAR(或 7zip)中启用选项以存档 NTFS 权限或其他 NTFS 特定属性,它会将它们每个都存储为单独的字段,并且在提取到不兼容的存储时它们将被忽略。
更一般地说,zip 文件是否以某种方式保留解压文件夹的文件系统?
文件系统本身,不,他们没有保留这一点(软件甚至没有有访问权如此低的级别直接访问文件)
档案馆最多保存一些特质文件系统(和/或操作系统)的属性,例如 Windows 上的 NTFS 和 FAT 特有的“DOS 属性”(隐藏/只读/系统),或 VMS 上的 ODS 特有的“文件版本”,但这些通常以相当通用的方式存储。
所以,如果我使用图库应用程序为图像文件添加标签,zip 不一定会保留这些标签吗?
大多数图库应用不使用文件系统级元数据用于标记。(事实上,我只曾经看到了这样一个应用程序 - Windows 2000 / XP“属性”对话框曾经具有的内置标记。3)相反,您通常将标签直接嵌入每个文件的内容中或存储在相邻的文件中。
例如,当你处理 JPEG 照片时,EXIF/IPTC/XMP 标签实际上是文件的一部分数据就文件系统而言。数据是作为一个大字节块进行检索,因此嵌入在 .jpeg 中的 EXIF 标签将始终与文件的其余数据一起存档,无论软件的元数据存档功能如何。
(图库应用使用的唯一文件系统级元数据字段可能是“上次修改”时间,以防它与 EXIF 日期不同。大多数归档应用做捕获“上次修改”时间,因为它几乎在各个系统上都得到普遍支持。
类似地,例如 MP3 文件的 ID3 标签作为常规数据存储在文件内部;文件系统对它们并不知情。
1(是的,确实如此。请参阅zipinfo -v
。)
2(Zip 格式还支持自定义子字段 - Unicode 文件名是一个子字段 - 因此理论上如果开发人员愿意的话它也可以扩展以存储 NTFS 元数据,但到目前为止还没有人愿意这样做。)
3(Windows Longhorn 对文件系统级标记有更宏伟的计划,但从未实现;相反,该功能在 Vista 中被彻底从 Explorer 中删除。)
答案2
简短的回答是,不是。
Zip 格式不存储除文件属性(只读、隐藏、存档和系统)之外的文件权限
如果您在一个具有特定安全权限的文件夹中创建档案,将该文件移动到具有不同权限的另一个文件夹,然后提取该档案,则新文件将使用从文件存储位置继承的权限进行创建。
如果您想要创建可以传输的文件系统,请使用 VHDX 之类的东西,其中文件内有完整的分区方案。请注意,如果您采用 NTFS 路由,则该文件系统将仅在您的计算机上工作,或者如果计算机已加入域,并且您使用域用户,则任何已加入同一域的计算机都可以工作。
您可以使用磁盘管理创建 VHDX 文件。如果需要,您甚至可以随后压缩 .VHDX 以进行压缩。