linux - MAC OS X 别名文件夹/文件不会在 Windows 上保留

标签 linux macos unix terminal alias

我有一个文件夹,并且在我的 MAC 操作系统桌面上创建了一个别名(快捷方式)。现在,当我将该别名从 MAC 操作系统复制到 Windows 时,它会显示一种文件类型为"file"。

现在,如果我再次将该别名从 Windows 复制到 Mac OS,那么该别名现在是 Unix 可执行 文件并且不是别名。

我已经尝试压缩那个别名,但仍然有同样的问题。是否可以在 Windows 上保留 MAC 别名,当我将该别名复制回 Mac 时,它仍然是别名。

最佳答案

Mac 文件系统可以将多种元数据附加到其他文件系统(例如 Windows 使用的文件系统)不支持的文件。取决于文件在系统之间移动的确切方式,此元数据可能会或可能不会被保留;如果丢失,文件可能无法使用。

在别名文件的情况下,有两个相关的元数据:类型代码(将文件标识为别名)和资源分支(在别名文件的情况下,存储关于在哪里的信息找到原始项目)。旧版 OS X 创建的别名文件实际上根本没有常规内容(“数据分支”)——如果它们的元数据丢失,您将留下一个未知类型的空文件。较新的版本将原始项目信息存储在资源和数据分支中,因此如果资源分支丢失,它仍然可用;但如果类型代码丢失,操作系统不知道它是一个别名,它只会看到一些无法识别的数据(它会将其误认为是 unix 可执行文件)。

在某些情况下,如果您使用正确的 OS X 工具将文件复制/移动到外部文件系统(不支持类型代码、资源分支等),OS X 工具会将元数据编码并存储在一些替代形式:

  • 如果您使用 Finder 将文件复制到 FAT32 闪存驱动器,它会使用 AppleDouble 将元数据存储为名称带有“._”前缀的单独文件。格式。如果你在 Windows 上看这个,你会看到例如“别名文件”和“._别名文件”。只要这两个文件保存在一起,当它们回到 Mac 时,它就会在逻辑上将它们重新组合成一个包含所有元数据的文件。

  • 如果您使用 Finder 创建 zip 存档,它会执行非常相似的技巧,将元数据存储为 zip 存档内的“._”文件(在 __MACOSX 子文件夹中);如果您使用 Finder(实际上是 Archive Utility)展开存档,它会重新组合文件。

    但是 OS X 的命令行压缩工具支持这个 AppleDouble/"."技巧。如果您使用 zip 来创建存档,它只会留下 Mac 独有的元数据,如果您使用 unzip 来创建包含 ". 的存档"文件,它不会重新组合它们。如果您需要在命令行创建 zip 存档,ditto实际上是要走的路。

  • 如果您使用 Finder 将文件复制到使用 NTFS 文件系统的 Windows 服务器,它会将元数据隐藏在 alternate data stream 中。 (一种仅限 Windows 的高级元数据形式)附加到文件,如果您使用 Finder 将其复制回来,它将被正确地重新组合。但是,如果您使用其他东西,或者以不保留备用数据流的方式移动/复制文件,它就会丢失。

关于linux - MAC OS X 别名文件夹/文件不会在 Windows 上保留,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21771273/

相关文章:

linux - 用于在特定文件夹结构中备份修改文件的 Bash 脚本

macos - 创建 Mac 应用程序安装程序并在启动时传递参数

objective-c - 为什么我会收到此 Objective-C 错误消息 : invalid conversion from 'objc_object*'

bash - 如何通过 "mySync leftdir rightdir"等特定命令使我的同步 bash 脚本可执行?

ruby-on-rails - 在 Linux Mint 中开始使用 Ruby on Rails

linux - 如何使用 bash 命令创建 CPU 峰值

android - 在 Mac 上找不到 Genymotion 虚拟化引擎/插件加载中止

perl - 为什么shebang行总是第一行?

shell - unix 中基于 yyymm 的日期差异

Linux - 如何将一组文件和一个可执行文件压缩为一个唯一的可执行文件