一、ln命令概述
它的功能是爲某一個文件在另外一個位置建立一個同步的鏈接.當我們需要在不同的目錄,用到相同的文件時,我們不需要在每一個需要的目錄下都放一個必須相同的文件,我們只要在某個固定的目錄,放上該文件,然後在 其它的目錄下用ln命令鏈接(link)它就可以,不必重複的佔用磁盤空間。
二、硬鏈接和軟鏈接的區別
硬鏈接:是通過文件系統的inode連接來產生新的文件名,而不是產生新文件
軟鏈接:類似Windows的快捷方式功能的文件,可以讓你快速連接到目標文件(或目錄)
三、硬鏈接
語法:ln filename [linkname]
1、創建硬鏈接會增加額外的記錄項以引用文件
2、對應於同一文件系統上一個物理文件
3、每個目錄引用相同的inode號
4、創建時鏈接數遞增(鏈接數相當於一個文件有好幾個名字)
例如:
3表示的是鏈接數,說明a的文件名字有三個a,b,c
5、刪除文件時:
rm命令遞減計數的鏈接
文件要存在,至少有一個鏈接數
當鏈接數爲零時,該文件被刪除
例如:
把a刪除之後b的鏈接數就少了一個,變成了2,此時名字就只有b和c了
6、不能跨越驅動器或分區
在同一個分區不同的目錄是可以創建硬鏈接的,但是不同分區就不能創建
7、目錄不能建立硬鏈接,但是目錄的節點號會變化
例如:
因爲.表示當前目錄,所以/bin的節點號爲2
創建一個文件夾,節點數加一,這是因爲文件夾下面有個父目錄”..“
需要注意的是:
在centos6中節點數爲2的爲獨立分區,節點數爲1的是虛擬目錄
在centos7中如果是分區的根儘量放在128中
四、軟鏈接
語法:ln -s filename [linkname]
1、一個符號鏈接指向另一個文件
2、ls -l的顯示鏈接的名稱和引用的文件
3、一個符號鏈接的內容是它引用文件的名稱
4、可以對目錄進行
例如:
5、可以跨分區
軟連接沒有指定相對路徑或者絕對路徑的時候會報錯,他們會認爲你的鏈接文件和你的源文件 是在同一個目錄下面,在軟連接中一般都是採用相對路徑
6、ls –s 原始文件軟鏈接
原始文件相對路徑:相對的是軟鏈接文件路徑,而不是相對於當前工作目錄的路徑
7、指向的是另一個文件的路徑;其大小爲指向的路徑字符串的長度;不增加或減少目標文件 inode 的引用計數;
五、總結
使用ln如果不加任何參數的話,那麼就是hard link。而如果使用-s參數時,就做成差不多是Windows下面的快捷方式的意思,當你修改linux下的symbolic link文件時,則改動的其實是“源文件”,所以無論你的這個源文件被連接到哪裏去,只要你修改了連接文件,源文件就跟着變了。