linux 如何处理移动命令

Jef*_*eff 12 filesystem

linux 如何在后台处理移动命令?

假设我移动了我的家目录

/home/me
Run Code Online (Sandbox Code Playgroud)

我把它移到另一个目录

/home/foo/me
Run Code Online (Sandbox Code Playgroud)

下的所有文件和目录路径如何me更改?我知道我的Desktop目录 me现在/home/foo/me/Desktop以及,Documents /home/foo/me/Documents但文件系统是否明确更新下的每个路径me以反映更改?这听起来效率不高,而且可能不是这样。

我可以从哪里获得更多信息?

Ken*_*h L 21

要了解它如何移动文件夹,您可能需要了解一些 Linux 下的文件系统。每个文件和文件夹都存储为称为“ inode ”的数据结构的一部分。每个文件都有一个 inode 编号,文件夹也是如此。

要查看文件夹的 inode,请使用命令ls -ial foldername. 第一列显示文件的 inode 编号。对于每个文件夹,有两个唯一的名称...,分别代表自己的目录和父目录。

您可以尝试做一个实验,将带有子目录和文件的目录(例如 /home/me/source)移动到另一个目录(例如 /home/me/somewhere/else)。/home/me/source 的 inode 编号及其所有内容在移动前后保持不变。唯一的区别是 的inode编号..,原来共享/home/me的inode编号,现在变成/home/me/somewhere/else的inode编号。简单来说,Linux 更新到目录的链接,然后就完成了。

硬盘上的内容无论如何都不会被修改,只是在移动文件夹时更新了 inode 索引。当然,如果您将文件夹移动到不同的物理位置,则情况并非如此。

  • 是的,只要移动不跨越文件系统边界。 (4认同)