一、軟連接文件node
軟連接文件和硬連接文件都屬於連接文件。軟連接相似於 windows 的快捷方式。
見下圖例子,
上圖紅色框框中的 /bin 就是一個軟連接文件,真正指代的是 usr/bin 。因此命令其實應該是寫成 ls -l /usr/bin ,/bin/ls 其實就是 /usr/bin/ls ,幾個命令均可以執行,結果也是同樣的。
軟連接說白了,就是在一個文件裏存放另外一個文件的路徑,軟連接的大小和路徑是有關係的,路徑越長,軟連接佔用的內存越大。來看一下在哪一個文件下面軟連接比較多。見下圖,
這些粉綠色的文件就是軟連接文件,它真正的文件就是後面指代的文件。軟連接在拷貝文件的時候比較好用,能夠大量節省空間。見下圖,
將目錄 /tmp/ 下的文件 yum.log 作個軟連接到目錄 /root/111/yum.log ,一開始顯示權限不夠,是由於有 i 或 a 權限,使用 chattr 命令將 i 和 a 權限去掉之後,就能夠執行命令 ln -s /tmp/yum.log /root/111/yum.log ,將文件 /tmp/yum.log 作軟連接到 /root/111/yum.log ,執行命令 ls -l /root/111/ ,就能夠查看到文件 yum.log 的軟連接文件和後面指代的真正文件。
綜上,軟連接命令就是, ln -s + 源文件 + 軟連接文件 。
軟連接不只能夠連接文件,也能夠連接目錄。見下圖,
上圖中,粉綠色的目錄就是軟連接目錄,後面指代的真正目錄比較特殊,是絕對路徑,以根 / 開頭。跟上面查看的目錄 /lib64/ 不同,目錄 /lib64/ 裏面的路徑都是相對路徑。
如今作一個實驗,把 yum.log 文件作一個軟連接,命名爲 lyslinux.log 。見下圖,
上圖中的軟連接就是相對路徑,設置的這個軟連接僅僅是在當前目錄下,不過這樣作會有一些弊端,若是換一臺服務器以後,這個相對路徑就會失效,軟連接文件會打不開。因此,工做中要儘可能使用絕對路徑來設置軟連接。
來舉個例子,見下圖,
上圖中建立了一個 root 下不存在的文件 lyslinux.log ,而後設置軟連接,查看的時候,文件變成紅色的,還一直在閃,這說明這個文件是不存在的。由於這個軟連接文件是當前目錄下不存在的文件,見下圖,
紅色就是不存在的文件,接着用命令 touch 在目錄 123 下面新建一個 yum.log 文件,再來查看,就恢復正常了,lyslinux.log 就變成軟連接文件了。
以上,就是爲了說明,作軟連接的時候,要使用絕對路徑。
linux
有個工做中常常用到的例子,見下圖,
df -h 這個命令是用來查看磁盤分區的,之後會講到。如今來假設 /boot/ 磁盤的空間即將使用徹底,若是空間不足,會形成不少問題,也會致使系統不能正常使用。如今就須要清理空間,才能夠繼續正常使用。咱們能夠把即將裝滿的磁盤 /boot/ 上的日誌或文件移動到其餘內存較大且使用量不多的磁盤上去,好比 / 根。可是這個操做是有前提的,不能動這個文件的路徑。
咱們的思路是:先將文件內容拷貝到空間較大的磁盤目錄裏,而後將原目錄下的文件刪除,這樣就能夠釋放原目錄的磁盤空間,接着作一個軟連接操做將拷貝的文件軟連接到原目錄下,這樣一來,服務在執行的時候,仍是將內容寫到原目錄下的,但其實是軟連接到拷貝的目錄上去。磁盤空間獲得有效釋放。windows
二、硬連接文件服務器
上圖中紅色框框內的數字,表示有幾個文件使用了和這個文件相同的 inode 號。通常文件的話,一般這個數字都是 1 ,說明沒有另一個文件使用相同的 inode 號。可是目錄比較特殊,下面會有子目錄,包括目錄 . 和目錄 .. ,這些目錄的數量就是紅色框框裏面的數字。markdown
如今要介紹的硬連接和目錄沒有關係,也就是說硬連接不支持目錄,只支持文件。如今對文件 1.txt 作硬連接和軟連接,見下圖,
上圖中,咱們是對文件 1.txt 作硬連接和軟連接,軟連接上面說過了,能夠看到軟連接佔用的空間很是小,才 5 KB,而硬連接佔用的內存 65 KB,且和原文件 1.txt 的空間大小是同樣的,建立時間也是同樣的。再看一下他們倆的 inode 號,都是 33582997 。也能夠看到這倆文件前面的數字都是 2 ,這說明有兩個文件使用了同一個 inode 號,但實際上這個不太好區分。想找一個文件的硬連接文件很差找,除非是本身建立的,不過很差找不表明找不到,使用 find 這個命令能夠找出來,後面會說。
簡單來講,就是建立一個文件,這個文件和另一個文件的 inode 號同樣,這兩個文件相互爲硬連接文件。這兩個文件是同樣的,沒有像軟連接那樣有原文件和快捷方式之分。而軟連接的原文件是不能刪除的,不然軟連接文件就失效了。硬連接呢?見下圖例子,
上圖把文件 1.txt 刪除掉,再查看,能夠看到軟連接文件顯示紅色,軟連接後面指代的真正文件顯示紅色而且在閃。說明軟連接文件失效,只剩下路徑了。而硬連接文件還在,不受影響,只不過文件前面的 inode 號變成 1 了。因此,硬連接刪不刪原文件是不受影響的。
咱們能夠理解爲,硬連接的文件名只是一個門面,真正保存信息的文件在 inode 上,見下圖,
inode 是文件系統裏的特殊存在,它會記錄文件的屬性。因此硬連接實際上就是多一個文件指向 inode ,真正的文件在 inode 裏面。並且硬連接不會多佔空間,由於 inode 就一個。真正佔內存的就是 inode ,硬連接只是顯示 inode 的一個存在,多幾個都不會有什麼影響。
不能對目錄作硬連接,來試一下,見下圖,
硬連接只能針對文件,也是有前提的,不能跨分區,見下圖,
上圖中的解釋是,這兩個分區存在相同的 inode 文件。ide
總結:
一、能夠對文件作硬連接,不能對目錄作硬連接;
二、不能跨分區作硬連接,由於每一個分區都存在相同的 inode 文件。
三、硬連接能夠刪除,由於還有其餘的文件使用了同樣的 inode ,可是不能把全部相同 inode 的文件都刪除掉,總要留一份的。日誌