Linux系統:那些常見的硬連接和軟連接!

在Linux系統中,有些常見的硬鏈接和軟鏈接,你知道嗎?今天就帶你們來認識一下!先從Linux系統中的文件系統提及。node

1. 在Linux中一切皆爲文件

在Linux中有且只有一個根目錄,它就是 / (斜槓),它的子目錄有以下這些:linux

bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr varwindows

下面咱們來解釋一些比較重要目錄的各自意義:網絡

bin:表示二進制文件,包含了會被全部用戶使用的可執行程序spa

因bin目錄下的子目錄過多,這裏只截取一部分展現)操作系統

[hduser@localhost bin]$ ls [插件

boot:表示啓動文件的意思,包含了與Linux系統啓動相關的文件3d

dev:表示設備目錄(包含外設),它的每個子目錄都對應一個外設指針

etc:表示配置文件,包含系統的配置文件blog

home:表示用戶的私人目錄

[hduser@localhost home]$ ls hduser yzp

lib: 表示庫文件目錄 ,包含了全部對系統有用的庫文件

media:表示移動外設(如:USB、光盤等)目錄,咱們能夠經過media的子目錄來訪問這些設備

mnt:此目錄用於臨時加載一些設備

opt:用於安裝第三方軟件和插件的目錄

root:表示超級用戶的家目錄

proc:存放的是虛擬文件系統的目錄

sbin:包含系統級的可執行程序目錄

srv:此目錄包含一些網絡服務啓動後所需的數據

tmp:普通用戶和程序存放臨時文件的地方

usr:是存儲Unix操做系統軟件資源的目錄

[hduser@localhost usr]$ ls bin etc games include lib lib64 libexec local sbin share src tmp

咱們用一張圖來總結一下根目錄下各文件的含義

2、硬連接和軟連接:

1. 連接類型

類別:硬連接和軟連接

2. 首先咱們先來了解一下什麼是inode?

在linux系統中,文件的文件內容會被分配到一個標誌號碼,這個標誌號碼就是inode,它是文件的索引節點

linux文件系統中有一塊區域叫作inode table,它就是保存inode的地方

inode保存着文件的元信息,其內容包括:文件類型、文件權限、文件物理地址、文件長度、文件鏈接計數、文件存取時間、索引節點編號 、文件狀態、訪問計數、連接指針

Linux系統中,每一個文件名都綁定到它的文件內容並用文件內容的inode標識,文件名並非文件的惟一標識,Inode纔是文件的惟一標識

3. 硬連接原理

硬連接:使有連接關係的兩個文件共享一樣的文件內容,擁有一樣的inode, 缺陷是隻能建立指向文件的硬連接,不能指向目錄

4. 軟連接原理

軟連接:有軟連接關係的兩個文件,它們的inode是不一樣的,它能夠指向目錄,軟連接才真正像咱們在windows下的快捷方式

3、ln命令

1. 做用:用於在文件之間建立連接,ln是link("連接")的縮寫

2. 建立硬連接

ln a.txt b.txt

注:數字2表明有相同inode號的文件數

查看文件的inode

ls -i (i參數能夠顯示文件的inode)

咱們能夠看到 a.txt和b.txt 文件的inode是同樣的,說明它們指向的是同一個文件內容

咱們刪除a.txt文件,對b.txt文件來講,看會發生什麼狀況

ls rm a.txt ls cat b.txt ls -i

咱們用rm刪除了a.txt文件, 能夠看到對於b.txt文件沒有任何影響,它的inode也沒有改變

說明了對於硬連接來講,刪除任意一方的文件,它們共同指向的文件內容並不會從硬盤上刪除,只有同時把他們都刪除掉,它們共同指向的文件內容纔會消失,也就是那個inode纔會被刪除

3. 建立軟連接

ln -s file1.txt file2.txt

file2.txt -> file1.txt 表示文件file2指向file1, lrwxrwxrwx中的 l 表示file2.txt文件是一個軟連接文件

查看文件的inode

ls -i

咱們能夠看出文件file1和文件file2的inode是不一樣的

這是由於文件file2是指向文件file1的,它們並無指向同一塊文件內容,因此它們的inode號不相同

file2其實只是file1的一個快捷方式,它指向的是file1,因此顯示的是file1的內容

咱們刪除file1.txt對於file2.txt會有什麼影響?

若是咱們刪除了file2,那麼對於file1來講不會有任何影響,若是刪除file1,那麼file2就會變成"死連接",

這是由於file2指向的文件沒有了

rm file1.txt ls -lh

相關文章
相關標籤/搜索