我想知道 Windows 和 Linux 文件创建之间的主要区别是什么。
假设我在终端会话中输入:touch file
。Linux 幕后发生了什么?操作系统中的进程是什么?
答案1
在 Linux 中创建文件时:
- 生成一个 inode。这是一个指向磁盘上的数据块的描述符,还存储所有权、权限等信息。
- 创建指向该 inode 的硬链接。这实际上是“文件名”以及它在文件系统中的位置。
乍一看,这可能是一个令人困惑的概念,但其实它很简单。 Inode 是指向实际数据的标志,但要使用其中任何一个,您需要硬链接来显示文件系统的结构。
例如,这允许您拥有指向一个 inode 的多个硬链接,只要它们位于同一个分区上。
在 Windows 中(随着 Microsoft 文件系统的改进,这种情况可能会变得不真实),inode 和硬链接不是分开的,它们是同一个。这意味着当您创建文件时,它只会创建这个块。
明显的副作用是不存在多个硬链接,但不仅仅如此 - 您通常无法删除被锁定无法打开的文件(在 Linux 中这只会删除硬链接)(在 Linux 中这由 inode 数据处理)。
但除了这个(相当大的)差异之外,它们非常相似。
事实证明,自 Vista 以来,NTFS 的工作方式与常见的 Linux 文件系统非常相似。它支持硬链接和软链接,这意味着它们在数据和路径之间有一个类似 inode 的对象。
简而言之:如今没有太大区别。在比 Vista 更旧的 Windows 版本上,我上面经过修改的答案仍然有效。