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
- https://www.tecmint.com/create-hard-and-symbolic-links-in-linux/
- https://blog.usejournal.com/what-is-the-difference-between-a-hard-link-and-a-symbolic-link-8c0493041b62?gi=80afcc85cff1
- https://www.ostechnix.com/explaining-soft-link-and-hard-link-in-linux-with-examples/
- https://www.cyberciti.biz/faq/creating-hard-links-with-ln-command/
Pingback: [Linux] 清除記憶體的指令 - Clay-Technology World
很棒的文章