當前位置:首頁 » 服務存儲 » linux軟鏈目錄存儲數據
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

linux軟鏈目錄存儲數據

發布時間: 2023-01-10 17:42:37

『壹』 Linux軟鏈接和硬鏈接的區別之ln命令詳解

1. 先來了解一下Linux數據是如何保存和查詢的

對操作系統來說,數據分為兩種:1. 用戶數據 (user data) 2.元數據 (metadata)。用戶數據就是保存和記錄文件的內容。比如一個1M的ppt文件,500K的txt文件。這都屬於用戶數據。這個文件總有屬性吧,比如大小、修改時間、訪問時間、創建時間、存儲的位置(文件所在的inode)、文件創建者等等信息。這些屬性信息或者理解為匯總信息,我們稱它為元數據。一句話,用戶數據是文件的真實內容,而元數據則是匯總信息。

在 Linux 中,元數據中的 inode 號(inode 號即索引節點號)才是文件的唯一標識而非文件名。文件名僅是為了方便人們的記憶和使用,系統或程序通過 inode 號尋找正確的文件數據塊。

2. 查看文件對應的inode號

134474678 latest.tar.gz

linux查看文件對應的inode號

可以看出latest.tar.gz這個文件, inode 號是134474678,Linux查找讀寫該文件時,以為個inode號碼為標識,而不是文件名。文件名類似於網站域名,僅僅是方便人類記憶。

也就是說, inode134474678有一個硬鏈接,它就是latest.tar.gz。

3. 根據inode號查找對應的文件

那麼,問題來了,系統上有沒有第二個文件,它的inode號碼也是13447467。

使用find查找一下:

查找結果如下:

/root/latest.tar.gz

/root/latest2.tar.gz

linux根據inode號查找對應的文件

硬碟上真的有第二個文件它的inode號碼也是134474678,像這種情況,我們認為inode134474678有兩個硬鏈接。當然,這是本文作者提前准備好的。

為解決文件的共享使用,Linux 系統引入了兩種鏈接:硬鏈接 (hard link) 與軟鏈接(又稱符號鏈接,即 soft link 或 symbolic link)。鏈接為 Linux 系統解決了文件的共享使用,還帶來了隱藏文件路徑、增加許可權安全及節省存儲等好處。

4. 確認硬鏈接的數量

查看一下文件latest.tar.gz

輸出結果如下:

-rwxr-xr-x. 2 root root 8743850 Oct 11 15:00 latest.tar.gz

請留意輸出的結果中的數字2,表示該文件存在2個硬鏈接。

正常情況下,一個inode只有一個鏈接,如下例

輸出結果:

-rw-r--r--. 1 root root 9 Nov 21 11:39 abc.txt

請留意輸出的結果中的數字1,表示該文件只存在1個硬鏈接,默認情況下,文件都是只有一個硬鏈接的。

5. 查看軟鏈接

再來看一個文件

lrwxrwxrwx. 1 root root 15 Sep 26 15:57 /dev/stdout -> /proc/self/fd/1

linux查看軟鏈接

我們發現,/dev/stdout實際上指向另一個文件/proc/self/fd/1,這就是軟鏈接。類似於Windows系統上的快捷方式。

6. 軟鏈接與硬鏈接的區別

6.1 軟鏈接特點

6.2 硬鏈接特點

ln鏈接符原理如下:

Linux ln鏈接符原理圖

7. 創建文件的鏈接

Linux ln命令是一個非常重要而且常用命令,它用於為文件或者目錄創建鏈接。

7.1 創建軟鏈接

創建一個文件,用於演示軟鏈接。

創建軟鏈接示例:

檢查結果:

輸出文件屬性

lrwxrwxrwx. 1 root root 8 Nov 26 17:48 soft123.txt -> soft.txt

linux創建軟鏈接

可以看出這個文件指向當前目錄soft.txt,配置成功。7.2 創建硬鏈接

創建一個文件,用於演示硬鏈接。

創建硬鏈接,沒有使用選項

檢查結果:

輸出文件屬性:

-rw-r--r--. 2 root root 0 Nov 26 17:47 hard123.txt

linux創建硬鏈接

留意以上輸出數字2,表明該文件有2個副本。

8. 總結

ln命令可以創建文件的副本,也可以創建軟鏈接。

『貳』 2-18 Linux中的連接文件 --- 軟鏈接

Linux中的軟鏈接類似於windows中的快捷方式。

創建方式:ln -s oldfile newfile。

    例:文件軟鏈接 (目錄軟鏈接也是一樣的操作方式)。

    1、tmp 目錄下創建一個 test.txt 文件。

    2、ln -s test.txt test,為 test.txt 文件創建一個名為 test 的軟鏈接。

    3、ll 查看詳情會發現有一個藍色的 test --> test.txt (test 指向 test.txt)。同時文件類型是            l 開頭,l 是指鏈接文件的意思。 

    4、對軟鏈接文件進行 vim 操作。輸入This is ln -s test. :wq保存並退出。

    5、通過cat test 和 cat test.txt 查看內容。得出的結果都是一樣的。既軟鏈接 test 和 test.txt              已經建立關聯,對 test 操作等於對 test.txt 操作。

tips:軟鏈接特點。

    1、可以對不存在的文件創建軟鏈接。

    tmp 目錄下除了 test 和 test.txt 並沒有其他文件。

    此時 ln -s abc.txt t1,為不存在的 abc.txt 文件創建一個 t1 的軟鏈接。t1 軟鏈接是可以創建        的,只是由於沒有真實存在的 abc.txt 文件。通過 ll 查看詳情,系統會在 abc.txt 處用紅色閃      爍高光發出提示,意指abc.txt文件不存在。

    此時,tmp 目錄下新建一個 abc.txt 文件,t1 軟鏈接到 abc.txt 文件就會正常。不會再有紅色      提示。

    2、可以對文件 或者 目錄創建軟鏈接,目錄創建軟鏈接和文件創建軟鏈接流程一樣。

    3、刪除軟鏈接,不會影響它的指向文件。

    vim t1:編輯 t1 軟鏈接,輸入1 t1 的內容保存退出。

    刪除 t1 軟鏈接,tmp 目錄下已沒有軟鏈接指向 abc.txt 文件。

    此時,cat abc.txt 文件可以查看內容,也可以 vim abc.txt 增加 2 abc.txt 內容。證實了,刪        除軟鏈接,不會影響它的指向文件。

    4、刪除了指向文件,該軟鏈接將變為無效連接。

    當 t1 軟鏈接指向實際文件 abc.txt 的時候,t1是可以對 abc.txt 進行增刪改查操作的。若 rm -      rf abc.txt 刪除了實質性的 abc.txt 文件後,t1 將不能做任何操作。失去了實質性文件而存在       的軟鏈接等同於創建一個空的軟鏈接效果一樣。

『叄』 linux環境下通過軟鏈接變更mysql數據存儲路徑

想要改變mysql數據存儲路徑的想法最初是在生產伺服器上mysql的數據放到了系統盤上,導致系統盤滿額,沒有足夠的內存交換空間而死機。
將mysql數據存儲到其他目錄下有兩種方法,方法一修改my.cnf配置文件,不過經過筆者通過網上的配置資料嘗試總是不成功,環境是在centos7下操作的。後來想到一個簡單的方法,通過linux的軟鏈接將實際數據放到另外的目錄裡面就可以了。

操作系統是centos7
mysql是通過二進制包裡面的rpm方式安裝的。相當於全自動了。

先關閉mysql

默認情況下,rpm安裝好的mysql會將數據放置在 /var/lib/mysql 目錄當中,我們像將數據遷移到/mnt/data目錄當中在terminal當中輸入:

mv命令會直接將 /var/lib/mysql 文件夾直接剪切到 /mnt/data 目錄當中。
這時我們需要回到/var/lib目錄當中,

在這個目錄當中建立軟鏈接。

軟鏈接相當於windows裡面創建目錄快捷方式是一樣的,這個時候你應該可以看到mysql文件夾回到了 /var/lib 目錄當中,要進去查看一下mysql的路徑是否和my.cnf一致。
這時候我們再啟動mysql

以上我們就將數據遷移到其他目錄下,並且還沒有修改和變更my.cnf文件。

『肆』 Linux下怎麼使用軟鏈接解決目錄轉移的問題

linux中設置軟鏈接如下:
只要在ln後面加上選項 –s,軟鏈接就建立了
[[email protected] test]# ls -il
總計 0
1491138 -rw-r–r– 1 root root 48 07-14 14:17 file1
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand
[[email protected] test]# ln -s file1 file1soft
[[email protected] test]# ls -il

『伍』 五分鍾讓你明白linux的軟鏈接和硬鏈接的用法

 什麼是軟鏈接和硬鏈接,很多人對這個概念比較模糊,這里幫助你明白他們之間的區別和用法。

為解決文件的共享使用,Linux 系統引入了兩種鏈接:硬鏈接 (hard link) 與軟鏈接(又稱符號鏈接,即 soft link 或 symbolic link)。

在 Linux 中,元數據中的 inode 號(inode 號即索引節點號)才是文件的唯一標識而非文件名,文件內容要通過inode 號來尋找,就像交通指示牌一樣,指示著數據找尋的方向。

軟鏈接可以理解成快捷方式,和原文件的inode號不一樣。它和windows下的快捷方式的作用是一樣的,軟鏈接數據塊中記錄的亦是相對路徑指向。

硬鏈接和原文件對應一個inode,就是對應一個文件,可以理解成一個文件有幾個別名.

下面這張圖表明了他們之間的區別了。

這二張圖詳細的給出這二個文件的異同處。

1,軟鏈接可以理解成快捷方式,也清楚知道原文件在哪兒。它和windows下的快捷方式的作用是一樣的,和windows一樣,刪除源文件,快捷方式也用不了。

2,硬鏈接可以說做了一個備份,但並沒有增加空間,因為文件就一個,這種可以防止源文件刪除後不能使用的問題,但也有局限性,不能對目錄和跨文件系統使用。

相信通過上面的說明,你已經明白了二者之間的區別和用途了。

『陸』 Linux文件系統中硬鏈接和軟鏈接的區別

鏈接和軟鏈接的區別
1.原理上:
硬鏈接(hard link):文件A是文件B的硬鏈接,則A的目錄項中的inode節點號與B的目錄項中的inode節點號相同,即一個inode節點對應兩個不同的文件名,兩個文件名指向同一個文件,A和B對文件系統來說是完全平等的。如果刪除了其中一個,對另外一個沒有影響。每增加一個文件名,inode節點上的鏈接數增加一,每刪除一個對應的文件名,inode節點上的鏈接數減一,直到為0,inode節點和對應的數據塊被回收。註:文件和文件名是不同的東西,rm A刪除的只是A這個文件名,而A對應的數據塊(文件)只有在inode節點鏈接數減少為0的時候才會被系統回收。
軟鏈接(soft link):A是B的軟鏈接(A和B都是文件名),A的目錄項中的inode節點號與B的目錄項中的inode節點號不相同,A和B指向的是兩個不同的inode,繼而指向兩塊不同的數據塊。但是A的數據塊中存放的只是B的路徑名(可以根據這個找到B的目錄項)。A和B之間是「主從」關系,如果B被刪除了,A仍然存在(因為兩個是不同的文件),但指向的是一個無效的鏈接。
2.使用限制上:
硬鏈接:

a:不能對目錄創建硬鏈接,原因有幾種,最重要的是:文件系統不能存在鏈接環(目錄創建時的」..」除外,這個系統可以識別出來),存在環的後果會導致例如文件遍歷等操作的混亂(,pwd等命令的運作原理就是基於文件硬鏈接,順便一提,ls -l結果的第二列也是文件的硬鏈接數,即inode節點的鏈接數)
b:不能對不同的文件系統創建硬鏈接,即兩個文件名要在相同的文件系統下。
c:不能對不存在的文件創建硬鏈接,由原理即可知原因。
軟鏈接:

a.可以對目錄創建軟鏈接,遍歷操作會忽略目錄的軟鏈接。
b:可以跨文件系統
c:可以對不存在的文件創建軟鏈接,因為放的只是一個字元串,至於這個字元串是不是對於一個實際的文件,就是另外一回事了
3.命令
硬鏈接:ln 源文件名 鏈接名

軟鏈接:ln -s 源文件名 鏈接名

硬鏈接和軟鏈接的作用
硬鏈接:

硬連接的作用是允許一個文件擁有多個有效路徑名,這樣用戶就可以建立硬連接到重要文件,以防止「誤刪」的功能。只刪除一個連接並不影響節點本身和其它的連接,只有當最後一個連接被刪除後,文件的數據塊及目錄的連接才會被釋放。也就是說,文件真正刪除的條件是與之相關的所有硬連接文件均被刪除。
還有如果把鏈接名創建為一個以.開頭的隱藏文件,還能很好的隱藏自己的隱私(你們懂的..呵呵呵)。

軟鏈接:

軟鏈接又稱之為符號連接(Symbolic Link)。軟鏈接文件類似於Windows的快捷方式。它實際上是一個特殊的文件。在符號連接中,文件實際上是一個文本文件,其中包含的有另一文件的位置信息。