/cygdrive/d/ 是格式化为 ext2 的 USB 硬盘,并安装有ext2fsd。
当我尝试cp -al /cygdrive/d/X /cygdrive/d/Y
将 X 作为文件时,出现标题中的错误。
我尝试过/验证过的事情
我这样做了chmod -R 777 /cygdrive/d
,但仍然得到相同的结果。
我以本地管理员的身份运行,我是 /cygdrive/d 的所有者。
X 是一个文件,而不是目录。
截至今日,Windows Server 2012 R2 正在运行 cygwin64。
例如,它是 ext2,因为我可以,touch /cygdrive/d/filename_with_a_colon:in_it
而且它可以工作,我可以用 看到它ls
。更不用说,ext2fsd 和 Windows 磁盘管理器中也这么说。
具有讽刺意味的是,NTFS 驱动器上的相同语法运行良好并创建 NTFS 硬链接。
我也尝试将驱动器重新格式化为 ext3,结果相同。我有由于 ext2 比 ext3/4 更旧,因此更有可能得到完全支持,但我想这没什么区别。
问题
如何使用 cygwin 创建简单的 ext2 硬链接?
答案1
Windows 确实支持硬链接。但是,CreateHardLink
说明了一切:
该功能仅支持NTFS文件系统
这个限制可能是硬编码的。因为 ext2fsd 显然不是 NTFS,所以 Windows 将拒绝在其上创建硬链接。
Cygwin 在 Windows API 之上提供了 POSIX API 兼容性(某种程度上)。这意味着它最终也会调用CreateHardLink
并受到mklink
与其他 Windows 软件相同的限制。
e2fsprogs软件包中的许多工具(例如mke2fs
、、、...)直接在磁盘上操作,而不依赖于文件系统驱动程序。这就是为什么在使用它们更改内容之前必须卸载文件系统的原因。这也是为什么它们可以在 Windows(本机)无法访问 ext2/3/4 的情况下工作的原因。e2fsck
resize2fs