首发于微信公众号:【码农在新加坡】,欢迎关注。
个人博客网站:后端面试之Linux-cp和mv命令的区别
背景
如果你突然被面试官问:cp和mv这两个linux的命令有什么区别?
你会不会一脸懵逼,cp不就是复制,mv不就是移动吗,还能有什么区别?
如果你也是这么想,那么这篇文章适合你。
inode
了解文件操作命令例如cp
、mv
、rm
的底层原理时,需要先了解 linux 中文件系统的基本原理。
在linux系统中,文件系统对文件的存储和访问是通过一种被称为inode
即i节点的机制来实现的。
为什么需要inode呢?
文件数据存储在硬盘上,硬盘的最小存储单位叫做"扇区"(512Bytes)。OS读取硬盘的时候,为了提高效率会一次性读取一个"块"(8*扇区=4K)。
所以一个大文件的数据内容在磁盘上可能不是连续空间的,就需要inode来把各个Block
串联起来。
每个文件都对应一个 i 节点,i 节点存储了除文件名
和文件内容
之外的所有信息。
inode(index node)表中包含文件系统所有文件列表,一个节点 (索引节点)是在一个表项,包含有关文件的信息( 元数据 ),包括:文件类型,权限,UID,GID、链接数(指向这个文件名路径名称个数)、该文件的大小和不同的时间戳、指向磁盘上文件的数据块指针、有关文件的其他数据。
了解inode的基本信息之后,我们再看看cp
, mv
有什么区别。
cp
目标文件不存在时
当dest.txt
不存在时,执行cp src.txt dest.txt
。
可以发现dest.txt
和src.