關於Linux的軟鏈接和硬鏈接的一些概念


一 建立軟鏈接和硬鏈接的語法
軟鏈接:ln -s 源文件 目標文件
硬鏈接:ln 源文件 目標文件
源文件:即你要對誰建立鏈接

 

二 什么是軟鏈接和硬鏈接
1,軟鏈接可以理解成快捷方式。它和windows下的快捷方式的作用是一樣的。
2,硬鏈接等於cp -p 加 同步更新。

為了方便說明,我在根分區(/)下建立test文件夾,然后新建了一個jys文件

 

 

建立軟鏈接和硬鏈接:

 

 

區別: 軟鏈接文件的大小和創建時間和源文件不同。軟鏈接文件只是維持了從軟鏈接到源文件的指向關系(從jys.soft->jys可以看出),不是源文件的內容,大小不一樣容易理解。
硬鏈接文件和源文件的大小和創建時間一樣。硬鏈接文件的內容和源文件的內容一模一樣,相當於copy了一份。

 

 

但是簡單的copy的文件創建文件的時間應該是復制文件時的時間,肯定不會像硬鏈接那樣和創建源文件的時間相同。你想的沒錯。

 

 

但是只要加一個選項-p,時間就一樣了

 

 


那么cp -p的文件是不是就相當於硬鏈接了呢?其實不然,對於源文件的內容有修改,硬鏈接文件會同步更新修改,始終保持和源文件的內容相同,而復制的文件則不可能做到這一點。

 

 

所以,硬鏈接等於cp -p加同步更新。
軟鏈接像快捷方式,方便我們打開源文件,這一點在windows中深有體會,那硬鏈接有哪些應用呢?
在多用戶的操作系統里,你寫一個腳本,程序等,沒有完成,保存后等下次有時間繼續寫,但是其他用戶有可能將你未寫完的東西當成垃圾清理掉,這時,你對你的程序,腳本等做一個硬鏈接,利用硬鏈接的同步更新,就可以方式,別人誤刪你的源文件了。

 

 

三,刪除源文件多軟鏈接和硬鏈接的影響

 

 

查看軟鏈接文件,查看的文件不存在。和windows一樣,刪除源文件,快捷方式也用不了。但是刪除源文件,為什么硬鏈接文件還可以查看呢?
這里要簡單說下i節點了。i節點是文件和目錄的唯一標識,每個文件和目錄必有i節點,不然操作系統就無法識別該文件或系統,就像沒有上戶口的黑戶。linux操作系統是不識別些字母的,像這些jys ,jys.hard操作系統根本不知道是什么玩意。

 

 

可以看出硬鏈接文件和源文件i節點號相同,並且一個i節點可以對應多個文件名。

 

如圖,刪除了jys,只是刪除了從920586到jys的映射關系,不影響它和jys.hard的映射關系。此圖也解釋了硬鏈接的同步更新,對源文件修改,操作系統只認i節點,於是操作系統就將修改內容寫進所有i節點相同名字不同的文件。

 

四.它們的共同點和不同點

  軟鏈接:
        1.軟鏈接,以路徑的形式存在,類似於Windows操作系統中的快捷方式
        2.軟鏈接可以跨文件系統
        3.軟鏈接可以對一個不存在的文件名進行鏈接
        4.軟鏈接可以對目錄進行鏈接
        5.軟鏈接原文件/鏈接文件擁有不同的inode號,表明他們是兩個不同的文件
        6.當源文件目錄改變后,軟連接訪問不到
硬鏈接:
1.硬鏈接,以文件副本的形式存在,但不占用實際空間 2.不允許給目錄創建硬鏈接(可以通過參數添加但僅限root用戶) 3.硬鏈接只有在同一個文件系統中才能創建 4.不能對不存在的文件創建硬鏈接 5.硬鏈接原文件/鏈接文件公用一個inode號,說明他們是同一個文件 6.當源文件目錄改變后,硬連接可以訪問

 

 

五.使用場景

軟鏈接一般被用來設置可執行文件的快捷方式的路徑。

一般比較重要的文件我們擔心文件被誤刪除且傳統復制備份方式占用double數量的空間會造成浪費,可以使用硬鏈做備份來解決;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM