当文件被移动时,它们是否存储在内存中?

当文件被移动时,它们是否存储在内存中?

当我使用命令移动文件时mv,是否首先读取该文件,将其完全缓存到内存中,然后另存为另一个文件?还是和写作一样

while read line; do
    echo "$line" >> output_file
done < input_file

与 类似cp。将一个文件复制到另一个文件时,是否先将文件完全缓存到内存中,然后再进行复制?

答案1

通常 amv更接近于重命名而不是副本。在经典的 UNIX 类型文件系统中,如果源和目标位于同一安装点,则不会复制包含文件数据的 inode。相反,会创建一个指向相同 inode 的新文件名,并且旧文件名将被取消链接。

如果mv是另一个安装点,那么它将是一个实际的副本。一次在 RAM 中的比例是操作系统细节,其对用户的透明度没有定义。

仅举一个例子,如果认为数据实际上已复制到新位置,则对于用户来说,该文件在概念上可能会“写入”磁盘。但在操作系统级别,它实际上可能驻留在尚未刷新到硬件的缓冲区中。

相关内容