在 Ubuntu 中,与 Windows 不同,我可以在将文件写入硬盘时重命名文件(例如,因为它是程序的输出或另一个文件的副本),我还可以重命名包含正在写入的文件的目录写入:系统不会发送诸如“文件正在使用,不允许操作”之类的消息。此重命名操作是否 100% 安全,还是存在创建损坏文件的风险?并且,在第一种情况下,与其他操作系统不同的是,使其成为可能的技术原因是什么?(也许与 Linux 文件系统结构和 Inodes 的使用有关,我想......?)
非常感谢。
Linux 处理文件句柄,在 Linux 中重命名或移动文件不会改变文件句柄。即使删除文件也不会有问题:拥有文件句柄的进程仍然可以读写。
inode 上的Wikipedia 页面将是最好的读物。
在计算中,inode(索引节点)是许多 Unix 文件系统中的一种数据结构。每个 inode 存储有关文件系统对象(文件、设备节点、套接字、管道等)的所有信息。除了现代文件系统中的某些情况外,它不存储文件的数据内容和文件名。
影响
当文件被移动到同一设备上的另一个目录时,或者当磁盘碎片整理可能会改变其物理位置时,文件的 inode 编号保持不变。这也意味着在许多非 Unix 文件系统(例如 FAT 及其后代)中不可能实现完全一致的 inode 行为,当文件的目录条目及其数据移动时,它们无法存储这种不变性.
所以:是的。