Skip to content

[Linux] 使用 ln 建立軟連結、硬連結檔案

Last Updated on 2021-06-23 by Clay

在 Windows 作業系統底下,我們經常會使用『捷徑』這種重新導向檔案真正路徑的結構來管理我們的檔案,這是一件相當方便的事情。

我來舉一個我認為比較實際的例子:今天我們電腦中擁有兩顆硬碟,一顆是 SSD 系統碟、一顆是大容量的 HDD 當作儲存裝置。一般來講,我們的桌面、系統根目錄全部都會放在 SSD (畢竟人家是系統碟),所以我們比較方便開啟的檔案都是位於 SSD 當中。

可是問題來了。今天我有著大量的音樂、破百張的專輯、足足有破百 GB 的大小,我應該放在哪裡好呢?

放在 SSD 當中方便我開啟嗎?可是 SSD 比較珍貴,可以說得上是寸土寸金 (?),而音樂這種檔案其實也不用特意放在 SSD 中加速啊。

可是說到要放在 HDD,可能我每次想要播放一首音樂,我就得繞大遠路跑到另外一顆硬碟的路徑去開啟,這樣豈不是非常不方便?

所以今天的主角 "ln" 就姍姍來遲了。在 Linux 作業系統底下,我們可以將資料夾製作軟連結,將想要打開的資料夾放在 SSD 當中,但卻連結到 HDD 儲存裝置。這樣一來我們又可以方便開啟、又可以享受到不用消耗 SDD 容量的好處。

除了上述這樣的功能外,其實在撰寫程式實驗時也是非常方便的管理架構。

話題扯遠了,以下就來紀錄該如何使用 "ln" 指令。


硬連結

首先要說明的是,在 Linux 系統當中,每一個檔案都會有一個自己專屬的 Inode。而所謂的『硬連結』則是一種指標,將我們建立的硬連結檔案指向原始檔案,這樣一來系統就不用替新建的檔案分配 Inode。

比如說我有個叫做 LIFE 的檔案 (我真的有這個檔案,放一些生活小規劃 XDD),然後我想要建立它的硬連結檔案:

ln LIFE LIFE_2

這樣一來我就建立了 LIFE 檔案的硬連結檔案 LIFE_2 了。我們可以使用以下指令查看它們的 Inode:

ls -i LIFE LIFE_2

Output:

7515764 LIFE
7515764 LIFE_2

可以發現,它們的 Inode 完全一樣。這代表了兩份檔案其實是同一份檔案,並且 LIFE_2 其實是完全不佔空間的。並且,修改其中一份的時候另一份也會一起被修改。

不過若是刪除其中一個,那麼這份檔案仍然會存在著。只有當所有這個 Inode 的檔案都被刪除,這份檔案才會真正消失在我們的儲存裝置中。

不過要注意的是,硬連結無法連結一個資料夾。


軟連結

軟連結,又稱符號連結 (Symbolic link),基本上我覺得最大的好處就是它可以連結資料夾。

假設我想要在 "Enjoy" 資料夾底下建立 "Music" 資料夾的軟連結,而我 "Music" 資料夾本體一直放在 D 槽中,那麼,我可以使用以下指令:

ln -s /D/Music Enjoy/Music

這樣一來,我的 "Enjoy" 資料夾底下就會自動出現 "Music" 資料夾,並且直接指向 D 槽中的音樂資料夾。

而且,我們可以使用以下指令查看檔案大小:

du Enjoy

Output:

4 Enjoy/

如何?不會佔據珍貴的 SSD 空間對吧?

如果要取消軟連結,則可以使用下面指令:

unlink Enjoy/Music

我們就會發現軟連結的資料夾完全消失了。


References


Read More

Tags:

2 thoughts on “[Linux] 使用 ln 建立軟連結、硬連結檔案”

  1. Pingback: [Linux] 清除記憶體的指令 - Clay-Technology World

Leave a Reply