淺談linux系統中mv、cp、rm這三種命令的工作原理

淺談mv、cp、rm這三種命令的工作原理

mvcp、rm命令是linux系統中經常用到的工具,但是如果想知道這些命令在執行過程中底層具體做了哪些工作,我們首先要了解下一個關鍵的東西:inode 表。

? inodeindex node)表中包含文件系統所有文件列表,一個節點 (索引節點)是在一個表項,包含有關文件的信息( 元數據 ),包括:文件類型,權限,UID,GID、鏈接數(指向這個文件名路徑名稱個數)、該文件的大小和不同的時間戳、指向磁盤上文件的數據塊指針、有關文件的其他數據。Inode表結構如下圖所示:圖片1

? 我們繼續從下圖中去了解inode表,文件引用的是 inode號,人是通過文件名來引用一個文件,一個目錄是目錄下的文件名和文件inode號之間的映射。

圖片2

? 了解完inode表結構之后,我們需要首先了解下cp和rm兩個命令:

? cp命令是用來拷貝數據,在cp命令執行過程中:分配一個空閑的inode號,在inode表中生成新條目,在目錄中創建一個目錄項,將名稱與inode編號關聯,拷貝數據生成新的文件。

? rm命令是刪除數據的工具,在rm命令執行過程中;數據鏈接數遞減,從而釋放inode號,并且inode號可以被重用,把數據塊放在空閑列表中,刪除目錄項,數據實際上不會馬上被刪除,但當另一個文件使用數據塊時將被會被覆蓋。

? cp命令和rm命令可以看出來在運行這兩種工具時,底層數據都發生了改變,下面我們來談談mv命令執行時底層發生了什么:

? mv命令是經常用來將數據從一個地方挪到另外一個地方的工具,而mv命令在挪動數據的時候底層工作分為兩種情況:

? 第一種是mv命令的目標和源在相同的文件系統,可以理解為同一分區,mv命令在執行過程中用新的文件名創建對應新的目錄項,刪除舊目錄條目對應的舊的文件名,并不影響inode表(除時間戳)或磁盤上的數據位置,也就是說沒有數據被移動。

? 第二種如果目標和源不在一個文件系統,也就是不在一個分區,那么 mv就相當于cp和rm。即改變了inode表的條目,也發生了數據移動。

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/104126

(42)
PoPoPoPo
上一篇 2018-07-29
下一篇 2018-07-29

相關推薦

  • 二進制編譯MariaDB

    安裝環境 iptables selinux mariadb-server 卸載 創建賬號 useradd -r -d /data/mysqldb -s /sbin/nologin mysql 解壓縮 tar xvf mariadb-10.2.15-linux-x86_64.tar.gz -C /usr/local/ 創建軟鏈接 cd /usr/local l…

    Linux筆記 2018-06-10
  • 軟件包管理 rpm yum的使用

    軟件包管理 鏈接主要作用是吧各個模塊之間互相引用的部分處理好, 使得各個模塊之間能夠正確的鏈接,分為靜態和動態 靜態鏈接 ?以.a為后綴 ?把程序對應的依賴庫復制到包 ? ? ? ? ? 升級難 需重新編譯 ?占用空間多 遷移容易 動態鏈接 ?以.so為后綴 把依賴加做動態鏈接 ? ?占用空間少 ?升級方便 ? ? ? ? ? 若一個庫被刪,那么所有依賴此庫…

    Linux筆記 2018-04-22
  • 命令行展開案例

    [Azuth@azuth ~]$ mkdir /home/Azuth/tmp/{a,b}_{c,d}[Azuth@azuth ~]$ ll /home/Azuth/tmp/total 0drwxrwxr-x. 2 Azuth Azuth 6 May 20 20:35 a_cdrwxrwxr-x. 2 Azuth Azuth 6 May 20 20:35 a_…

    Linux筆記 2018-05-20
  • linux是隨身筆記part1

    第一周學習

    2018-06-25
  • Web Service基礎、httpd-2.2、httpd-2.4

    Web Service 傳輸層:提供進程地址 port number: tcp:傳輸控制協議,面向連接的協議,通信前需要建立虛擬鏈路,結束后拆除鏈路;端口:0-65535 udp:user datagram protocol,無連接的協議;端口:0-65535   IANA: 0-1023:特權端口,永久分配給固定應用使用 1024-41951:注…

    Linux筆記 2018-04-24
  • centos6啟動流程

    不知道為什么編輯了前兩次都發不了,這是第三次了

    Linux筆記 2018-05-13
欧美性久久久久