目录条目只是指向索引节点的指针。索引节点包含有关文件的元信息(名称除外),以及指向文件数据的指针(如果有)。当您开始复制文件时,您将获得索引节点的句柄。
操作系统维护对索引节点的引用计数。只要存在对索引节点的引用,索引节点和文件的数据都会保留。一旦删除了对索引节点的所有引用,索引节点将被删除,文件所需的空间将被释放。
当您打开文件进行复制时,它将一直保留到您的进程关闭文件为止。这应该在文件传输完成时发生,并且在复制过程失败时发生。如果文件传输在部分途中失败,并且您删除了该文件的所有硬链接,则将无法成功地重新开始传输。
编辑:正如其他人指出的那样,在不移动数据的情况下完成了在同一设备上的文件移动。而是在目标目录中创建一个新目录条目,并删除原始目录条目。
同一文件可能有多个目录条目。这些称为硬链接。通过为文件创建新的目录条目而不删除原始条目来创建它们。文件系统的inode有一个引用计数,用于记录指向该文件的目录条目的数量。
EDIT2:如果进程崩溃或被终止,则文件将被干净地删除,因为内存访问计数将减少为零。这是程序正常结束时发生的动作。
如果发生电源故障或其他无序关闭系统,则磁盘需要先进行fsck
(文件系统检查),然后才能完全装入磁盘。根据磁盘索引节点和目录结构的状态,空间将被恢复,文件将保留在目录中,或者将在目录中创建新条目lost+found
。结果将取决于已将哪些更改刷新到磁盘或写入文件系统日志。