導(dǎo)語
Linux 在生成文件的時(shí)候,內(nèi)容會(huì)為每一個(gè)文件生成一個(gè)唯一的索引節(jié)點(diǎn)(Inode),文件的屬性都會(huì)保存在這個(gè)Inode中。
鏈接是一種在共享文件和訪問它的用戶的若干目錄項(xiàng)之間建立聯(lián)系的一種方法,有軟鏈接和硬鏈接之分
軟鏈接又叫符號(hào)鏈接(symbol links),類似于Windows下面的快捷鍵
這里著重說明軟鏈接和遇到一個(gè)問題
軟鏈接克服了硬鏈接的不足,沒有任何文件系統(tǒng)的限制,任何用戶可以創(chuàng)建指向目錄的符號(hào)鏈接。因而現(xiàn)在更為廣泛使用,它具有更大的靈活性,甚至可以跨越不同機(jī)器、不同網(wǎng)絡(luò)對(duì)文件進(jìn)行鏈接。
創(chuàng)建
語法 ln -s target-path new-path
實(shí)際驗(yàn)證
root@pts/3 $ touch file1 file2
milian-backend [/devOps/temp/20160810] 2016-08-10 11:22:15
root@pts/3 $ ls -li
total 0
14682893 -rw-r--r-- 1 root root 0 Aug 10 11:22 file1
14682894 -rw-r--r-- 1 root root 0 Aug 10 11:22 file2
milian-backend [/devOps/temp/20160810] 2016-08-10 11:22:18
root@pts/3 $ ln -s file1 file1.soft
milian-backend [/devOps/temp/20160810] 2016-08-10 11:23:22
root@pts/3 $ ls -li
total 0
14682893 -rw-r--r-- 1 root root 0 Aug 10 11:22 file1
14682895 lrwxrwxrwx 1 root root 5 Aug 10 11:23 file1.soft -> file1
14682894 -rw-r--r-- 1 root root 0 Aug 10 11:22 file2
milian-backend [/devOps/temp/20160810] 2016-08-10 11:23:24
從上面的實(shí)際操作中發(fā)現(xiàn):
- 軟鏈接原文件和 鏈接文件擁有不同的inode號(hào),表明他們是兩個(gè)不同的文件
- 在文件屬性上軟鏈接明確寫出了是鏈接文件
- 文件大小是不一樣的,軟鏈接文件大小始終是5
- 軟鏈接的鏈接數(shù)目不會(huì)增加
總結(jié):
- 優(yōu)點(diǎn):可以在不同系統(tǒng)之間建立軟鏈接、對(duì)目錄建立軟鏈接
- 缺點(diǎn): 軟鏈接包含了文件路徑信息,如果原始文件發(fā)生轉(zhuǎn)移,則軟鏈接失效
刪除
語法:
rm symbol_name
實(shí)際操作:
root@pts/3 $ ls -li
total 4
14682893 -rw-r--r-- 1 root root 0 Aug 10 11:22 file1
14682895 lrwxrwxrwx 1 root root 5 Aug 10 11:23 file1.soft -> file1
14682897 -rw-r--r-- 1 root root 3700 Aug 10 11:28 file2
14682894 lrwxrwxrwx 1 root root 5 Aug 10 11:28 file2.soft -> file2
milian-backend [/devOps/temp/20160810] 2016-08-10 11:31:26
root@pts/3 $ rm file1.soft
rm: remove symbolic link ‘file1.soft’? y
milian-backend [/devOps/temp/20160810] 2016-08-10 11:34:37
root@pts/3 $ ls -li
total 4
14682893 -rw-r--r-- 1 root root 0 Aug 10 11:22 file1
14682897 -rw-r--r-- 1 root root 3700 Aug 10 11:28 file2
14682894 lrwxrwxrwx 1 root root 5 Aug 10 11:28 file2.soft -> file2
注意這里刪除的是文件的軟鏈接符號(hào),如果是目錄的軟鏈接符號(hào)會(huì)怎樣?
## 生成測(cè)試的dir1目錄和目錄下的測(cè)試文件
root@pts/3 $ mkdir -p dir1/dir11
milian-backend [/devOps/temp/20160810] 2016-08-10 11:37:44
root@pts/3 $ touch dir1/dir11/dir11-file1
milian-backend [/devOps/temp/20160810] 2016-08-10 11:37:56
root@pts/3 $ ls -liR dir1/
dir1/:
total 4
14682896 drwxr-xr-x 2 root root 4096 Aug 10 11:37 dir11
dir1/dir11:
total 0
14682899 -rw-r--r-- 1 root root 0 Aug 10 11:37 dir11-file1
milian-backend [/devOps/temp/20160810] 2016-08-10 11:38:04
root@pts/3 $ ls -li
total 8
14682895 drwxr-xr-x 3 root root 4096 Aug 10 11:37 dir1
## 給dir1創(chuàng)建兩個(gè)軟鏈接
root@pts/3 $ ln -s dir1 dir1.soft
root@pts/3 $ ln -s dir1 dir1_1.soft
## 查看結(jié)果
## 這里分別通過兩個(gè)軟鏈接進(jìn)去都可以看到 相同的dir11-file1 文件
## 說明指向的是同一個(gè)目錄
root@pts/3 $ ls -li
total 8
14682895 drwxr-xr-x 3 root root 4096 Aug 10 11:37 dir1
14682901 lrwxrwxrwx 1 root root 4 Aug 10 11:39 dir1_1.soft -> dir1
14682900 lrwxrwxrwx 1 root root 4 Aug 10 11:39 dir1.soft -> dir1
## 嘗試刪除 目錄的軟鏈接看最終的效果如何
## 先用“軟鏈接符號(hào)名稱” 刪除軟鏈接,看效果
root@pts/3 $ rm dir1.soft
rm: remove symbolic link ‘dir1.soft’? y
milian-backend [/devOps/temp/20160810] 2016-08-10 11:42:16
root@pts/3 $ ls -li
total 8
14682895 drwxr-xr-x 3 root root 4096 Aug 10 11:37 dir1
14682901 lrwxrwxrwx 1 root root 4 Aug 10 11:39 dir1_1.soft -> dir1
## 這里看到原始的目錄 dir1 還是存在的,這樣刪除是沒有問題的
#############################################
## 這里用另外一個(gè)方式刪除
## 出現(xiàn)這種方式的原因主要是因?yàn)?運(yùn)維人員一般都是喜歡用 TAB 鍵,如果名稱是目錄的話,用TAB 鍵會(huì)自動(dòng)的在后面補(bǔ)充一個(gè) '/'
root@pts/3 $ rm -rf dir1_1.soft/
## dir1 目錄還存在
root@pts/3 $ ls -li
total 8
14682895 drwxr-xr-x 2 root root 4096 Aug 10 11:47 dir1
14682901 lrwxrwxrwx 1 root root 4 Aug 10 11:39 dir1_1.soft -> dir1
## 但是 dir1目錄下面的所有東西都沒有了
root@pts/3 $ ls -lR dir1
dir1:
total 0
“坑”
在刪除軟鏈接符號(hào)的時(shí)候,一定要注意,慎用 TAB 鍵
針對(duì)目錄的軟鏈接文件,rm -rf symbol_name和rm -rf symbol_name/結(jié)果是完成不同的

公眾號(hào): Colinws工作室