Linux的硬鏈接和軟鏈接
阿新 • • 發佈:2018-05-13
Linux運維硬鏈接和軟鏈接
Linux鏈接分兩種:
? 一種被稱為硬鏈接(Hard Link),
? 另一種被稱為符號鏈接(Symbolic Link)。
默認情況下,ln命令創建硬鏈接, ln -s 創建軟連接
【硬連接】
硬連接指通過索引節點來進行連接。
在Linux的文件系統中,保存在磁盤分區中的文件不管是什麽類型都給它分配一個編號,稱為索引節點號(Inode Index)。
多個文件名指向同一索引節點是存在的,一般這種連接就是硬連接。
硬連接的作用是允許一個文件擁有多個有效路徑名,這樣用戶就可以建立硬連接到重要文件,以防止“誤刪”的功能。因為只刪除一個連接並不影響索引節點本身和其它的連接,只有當最後一個連接都被刪除後,文件的數據塊及目錄的連接才會被釋放。也就是說,文件真正刪除的條件是與之相關的所有硬連接文件均被刪除。
創建硬鏈接
ln命令
語法格式:
? ln 源文件 目標文件(目標文件可以不存在,在創建鏈接時候會默認創建同名的文件)
示例:
[root@anuo ~]# mkdir anuo [root@anuo ~]# ln anuo/ /tmp/ ln: "/tmp/": 不允許將硬鏈接指向目錄 [root@anuo ~]# touch anuo.txt [root@anuo ~]# ln anuo.txt /tmp/ --創建鏈接到/tmp/目錄下 [root@anuo ~]# ll -rw-r--r-- 2 root root 0 5月 13 17:54 anuo.txt [root@anuo ~]# ll /tmp/ -rw-r--r-- 1 root root 12 5月 13 17:57 anuo.txt [root@anuo ~]# cat /tmp/anuo.txt [root@anuo ~]# echo "123456" >> /tmp/anuo.txt --往鏈接文件裏追加內容 [root@anuo ~]# cat anuo.txt --查看源文件也增加了一樣的內容 123456 [root@anuo ~]# echo "abcd" >> anuo.txt --給源文件追加內容 [root@anuo ~]# cat /tmp/anuo.txt --鏈接文件也一樣增加相同的內容 123456 abcd [root@anuo ~]# \rm anuo.txt -f --刪除源文件 [root@anuo ~]# cat /tmp/anuo.txt --鏈接文件不變 123456 abcd
小結:
優點:硬鏈接相當於給文件做了備份,而且還是實時的互相備份,源文件變化鏈接文件也變化,源文件被刪除,也不影響鏈接文件的正常使用
缺點:硬鏈接 無法針對目錄,跨分區無法實現
【軟連接】
另外一種連接稱之為符號連接(Symbolic Link),也叫軟連接。軟鏈接文件有類似於Windows的快捷方式。它實際上是一個特殊的文件。在符號連接中,文件實際上是一個文本文件,其中包含的有另一文件的位置信息。
創建軟連接
語法: ln -s 源文件 目標文件
示例:
目錄測試:
[root@anuo ~]# mkdir anuo [root@anuo ~]# ln -s anuo/ abc [root@anuo ~]# ll 總用量 4 lrwxrwxrwx 1 root root 5 5月 13 19:39 abc -> anuo/ drwxr-xr-x 2 root root 4096 5月 13 19:36 anuo [root@anuo ~]# touch anuo/{a..c}.txt --在源目錄創建文件 [root@anuo ~]# cd abc/ --鏈接目錄下也會有 [root@anuo abc]# ls a.txt b.txt c.txt [root@anuo ~]# touch abc/{1..5}.txt --在鏈接目錄裏創建文件 [root@anuo ~]# ll abc/ 總用量 0 -rw-r--r-- 1 root root 0 5月 13 19:42 1.txt -rw-r--r-- 1 root root 0 5月 13 19:42 2.txt …… [root@anuo ~]# ll anuo/ --查看到源目錄裏也有了 總用量 0 -rw-r--r-- 1 root root 0 5月 13 19:42 1.txt -rw-r--r-- 1 root root 0 5月 13 19:42 2.txt …… [root@anuo ~]# \rm anuo/ -rf --刪除源目錄 [root@anuo ~]# cd abc -bash: cd: abc: 沒有那個文件或目錄 [root@anuo ~]# ll --可以看到鏈接目錄還在,但失效了 總用量 0 lrwxrwxrwx 1 root root 5 5月 13 19:39 abc -> anuo/
文件測試:
[root@anuo ~]# touch anuo.txt
[root@anuo ~]# ln -s anuo.txt abc.txt
[root@anuo ~]# ll
總用量 4
lrwxrwxrwx 1 root root 5 5月 13 19:51 abc -> anuo/
lrwxrwxrwx 1 root root 8 5月 13 19:55 abc.txt -> anuo.txt
drwxr-xr-x 2 root root 4096 5月 13 19:51 anuo
-rw-r--r-- 1 root root 0 5月 13 19:55 anuo.txt
[root@anuo ~]# echo "123456" >>anuo.txt
[root@anuo ~]# cat abc.txt
123456
[root@anuo ~]# echo "abcd123" >>abc.txt
[root@anuo ~]# cat anuo.txt
123456
abcd123
[root@anuo ~]# \rm abc.txt --刪除鏈接文件
[root@anuo ~]# ll
總用量 8
lrwxrwxrwx 1 root root 5 5月 13 19:51 abc -> anuo/
drwxr-xr-x 2 root root 4096 5月 13 19:51 anuo
-rw-r--r-- 1 root root 15 5月 13 19:56 anuo.txt
[root@anuo ~]# cat anuo.txt --源文件還存在沒有影響
123456
abcd123
[root@anuo ~]# ln -s anuo.txt abc.txt --再創建鏈接
[root@anuo ~]# cat abc.txt
123456
abcd123
[root@anuo ~]# \rm anuo.txt --刪除源文件
[root@anuo ~]# ll
總用量 4
lrwxrwxrwx 1 root root 5 5月 13 19:51 abc -> anuo/
lrwxrwxrwx 1 root root 8 5月 13 20:01 abc.txt -> anuo.txt
drwxr-xr-x 2 root root 4096 5月 13 19:51 anuo
[root@anuo ~]# cat abc.txt --鏈接文件也失效了
cat: abc.txt: 沒有那個文件或目錄
源文件被刪除,鏈接文件失效
能針對目錄創建
能跨分區創建
軟鏈接:相當於windows中的快捷方式
Linux的硬鏈接和軟鏈接