在 Linux 中,NTFS 驱动器上创建的符号链接 ( ln -s
) 在 Windows 中显示为包含内容的短文件IntxLNK + 0x01 + (UTF-16 encoded target path)
- 可能英特里克。我想编写一个脚本,在 Windows 启动时使用 WSL 将它们转换为正确的 NTFS 符号链接ln
。但是,我不知道如何检测实际上是 Linux 符号链接的短文件,除非查看每个文件的内容,这对于大型文件系统来说很糟糕,并且对于以 magic 开头的普通文件会失败。
为什么 NTFS-3g 仍然无法像 Windowsmklink
或 WSL2那样创建正确的重解析点ln -s
,即使这样的 Windows 符号链接在 Linux 下正常工作,即使getfattr -n system.ntfs_reparse_data
可以读取 NTFS 符号链接数据,我还是不明白。它实际上应该只是一个简单的setfattr
,虽然我不知道在属性中放什么。
那么,有没有办法使用文件元数据(而不是内容)来检测在 Linux 下创建的符号链接?我确信 Linux 符号链接具有一些特殊属性,因为 NTFS-3g 可以区分包含魔法的纯文件InterLnkx
和包含相同魔法的实际符号链接。
答案1
ntfsinfo
我通过比较两个文件(一个由 Linux 创建的符号链接和一个在 Windows 中创建的符号链接文件的副本)找到了答案。
它必须是系统文件(ATTRIB +S
在 Windows 上,或者ntfs_attr.sh
使用https://gist.github.com/Explorer09/ac4bf6838c271a9968b3在 Linux 上)。一旦打开系统属性,NTFS-3g 就会将文件视为符号链接,如果关闭,则文件将变为纯文件。所以... 开始编写脚本。