在 Linux 中的 NTFS 驱动器 ( ln -s) 上创建的符号链接在 Windows 中显示为包含内容的短文件IntxLNK + 0x01 + (UTF-16 encoded target path)— 可能是Interix。我想编写一个脚本,在 Windows 中启动时使用 WSL 的ln. 但是,我不知道如何检测真正是 Linux 符号链接的短文件,除非查看每个文件的内容,这对于大型文件系统来说会很糟糕,并且对于从魔法开始的普通文件来说会失败。
为什么 NTFS-3g 仍然无法像 Windowsmklink或 WSL2一样创建正确的重解析点ln -s,即使此类 Windows 符号链接在 Linux 下正常工作,并且即使getfattr -n system.ntfs_reparse_data可以读取 NTFS 符号链接数据,也超出了我的范围。它实际上应该只是一个简单的setfattr,尽管我不知道要在属性中放入什么。
那么,有没有一种方法可以使用文件元数据(而不是内容)来检测在 Linux 下创建的符号链接?我确信 Linux 符号链接具有一些特殊属性,因为 NTFS-3g 可以区分包含InterLnkxmagic 的纯文件和包含相同 magic 的实际符号链接。
ntfs symbolic-link ntfs-3g interix windows-subsystem-for-linux
我不小心在2Tb 外置硬盘上运行mkfs.ntfs -Q /dev/sda(而不是/dev/sda6)。幸运的是,开头有一个 1G 未使用的分区,结尾也有足够的空间:
Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 2099199 2097152 1G b W95 FAT32
/dev/sda2 * 2099200 3739256831 3737157632 1.8T 7 HPFS/NTFS/exFAT
/dev/sda4 3739256832 3907029166 167772335 80G 5 Extended
/dev/sda5 3739258880 3751841791 12582912 6G 83 Linux
/dev/sda6 3751843840 3907029166 155185327 74G 7 HPFS/NTFS/exFAT
Run Code Online (Sandbox Code Playgroud)
是否/dev/sda2安全?或者 mkfs.ntfs 在目标空间的中间写入元数据,在这种情况下,我猜任何文件都可能在没有警告的情况下损坏?