搜索
写经验 领红包
 > 美食

liux命令mv和cp的区别(liuxcp-命令)

导语:Linux下cp、mv、rm命令如何操作inodes

linux命令mv和cp的区别(linux cp-r命令)

cp命令复制文件时,系统内部的动作对inodes所产生的影响

当复制文件命令发生时,系统进行如下操作:

系统将找到一个空闲的i节点号码(inode number),把新增加文件的元数据(meta data)写入到这个空闲的i节点中并将这个新记录放入inode表中。

同时还要产生一条目录记录,把新增加的文件名对应到这个空的inode号码。

完成以上操作后,系统才会将文件的数据复制到新增的文件中去。

mv命令移动文件时,系统对inode所产生的影响

如果要移动文件的原来位置与移动后的目的位置在同一个文件系统上,当移动文件命令发生时,系统要进行如下操作:

系统会首先产生一个新的目录记录,把新的文件名对应到原有(源文件)的i节点。

删除带有旧文件名的原有的目录记录。

系统除了会更新时间戳之外,移动文件行为对原本在inode表中的数据不会有任何影响,也不会将文件移动到其他文件中去,也就是说没有发生真正的数据移动。

当要移动的文件的源位置与目的位置不在同一文件系统上时,mv的行为是复制和删除两个动作。

在进行数据文件或日志文件的搬移时,强调使用cp和rm命令进行文件的搬移,不要使用mv命令,因为mv命令很可能并未真正地将物理数据搬移到指定的位置,而只是做了所谓的逻辑移动而已。

rm命令删除文件时,系统对inodes所产生的影响

当删除文件命令发出时,系统要进行如下操作:

系统首先会将文件的连接数(link count)减1(如原来文件dog1.txt的link count为3,运行了rm dog1.txt命令之后,dog1.txt的link count将为2),若这个文件的link count小于1,系统就会释放这个i节点以便重用。

释放存储这个文件内容的数据块,即将这些数据块标记为可以使用。

删除记录这个文件名和i节点号的目录记录。

系统并未真正删除这一文件中的数据,只有当其他文件要使用这些已经释放的数据块时,这些数据块中原有的数据才会被覆盖掉。

其实,一些数据恢复软件工具就是利用刚刚介绍的rm的这一操作特性,因为只有原来的数据没有被覆盖掉,就有办法将它恢复过来。

今天就分享这么多了,谢谢欣赏^o^!

本文内容由小熊整理编辑!