linux ln命令

  • Hard Links:node


剛剛說過,當系統要讀取某一個檔案的時候,就會先去讀inode table ,而後再根據 inode 的信息到 block area 去將數據取出來利用!而hard link 就是直接再創建一個 inode 連結到檔案放置的 block 區塊。也就是說,進行hard link 的時候,實際上,你的檔案內容不會改變,只是你在查詢的時候,利用原來的inode 與後來的 inode 都可被指定到該檔案放置的地點,所以兩個檔案的內容會是同樣的!因此讀取任何一個inode 的結果都是存取在同一個檔案的內容就是了。不過,這樣一來就有個問題啦,由於inode 是會連結到 block 區域去的,而『目錄』自己僅消耗 inode 而已,那麼一來的話,hard link 不就不能 link 目錄啦?對的!沒錯! Hard link 有兩個最大的限制:
  1. 不能跨 filesystem ,由於不一樣的 filesystem 有不一樣的inode table 嘛!linux

  2. 不能 link 目錄!安全


  • Symbolic Linksless


相對於 hard link , Symbolic link 可就好理解多了,基本上,他就是在創建一個獨立的檔案,而這個檔案會讓數據讀取指向他link 的那個檔案內容!因爲只是利用檔案來作爲指向的動做,因此,當來源檔被刪除以後,symboliclink 的檔案會『開不了』,會一直說『沒法開啓某檔案!』


因此,看樣子,彷佛 hard link 比較安全,由於即便某一個inode 被殺掉了,只要有任何一個 inode 存在,那麼該檔案就不會不見!不過,不幸的是,因爲Hard Link 的限制太多了,包括沒法作『目錄』的 link ,因此在用途上面是比較受限的!反而是Symbolic Link 的使用方向較廣喔!好了,說的天花亂墜,看您也差很少快要昏倒了!不要緊,實做一下就知道怎麼回事了!

特別留意,底下的案例中,咱們是將系統的設定文件copy 到 /root/test 底下進行測試用的,請不要在 /etc/ 底下作,將來咱們的工做目錄都會在/root/test 底下進行,這有個好處,是可讓您清楚的知道,這是用來 test 用的啦!
語法:[root @test/root ]# ln [-s] [來源檔] [目的檔]
參數說明:
-s  :提供連結檔的連結!若是直接以 ln 不加任何參數的話,那麼就屬於 hard link囉!
範例:
[root @test/root]# mkdir test
[root @test/root]# cd test
[root @test/test]# cp /usr/bin/passwd .

0. 本來的信息:
[root @test/test]# ll
-rw-r--r--1root     root       13476 Jun 26 11:31 passwd
[root @test/test]# du -k<==查看該目錄下的佔用硬盤空間
20ide

1. Hard Link信息:
[root @test/test]# ln passwd passwd-hard
[root @test/test]# ll
total 32
-rw-r--r--2root     root       13476 Jun 26 11:31 passwd
-rw-r--r--2root     root       13476 Jun 26 11:31 passwd-hard
注意看,上面那個數字變成2 囉!這就是佔用掉 inodes 囉!
[root @test/test]# du -k
20  <==注意看,容量並無變大!由於是link 檔案呀!測試

2. SymbolicLink 信息:
[root @test/test]# ln -s passwd passwd-soft; ll
-rw-r--r--   2 root     root       13476 Jun 26 11:31 passwd
-rw-r--r--   2 root     root       13476 Jun 26 11:31 passwd-hard
lrwxrwxrwx   1 root     root           6 Jun 26 11:37 passwd-sofe -> passwd
注意囉!該Symbolic Link 的檔案是有容量的呦!
注意囉, passwd-soft會指到另一個檔案去,並且,最前面屬性顯示 l ,
此外,他是一個獨立的檔案!先殺掉passwd 後,咱們分別 more 一下內容:rem

3. 用 more 來試試看是怎樣?!
[root @testtest]# rm passwd
rm: removeregular file `passwd'? y
[root @testtest]# more passwd-hard
………(正常顯示)
[root @testtest]# more passwd-soft
passwd-soft:No such file or directory同步

說明:
要注意囉!若是不加任何參數的話,那麼就是 Hard Link 囉!如同上面的狀況,增長了hard link 以後,能夠發現 link 那一欄屬性增長了!而若是這個時候砍掉 passwd會發生什麼事情呢?呵呵! passwd-hard 的內容仍是會跟原來 passwd 相同,可是passwd-soft 就會找不到該檔案啦!就是這樣!瞭解了嗎?!還有,跟 cp 也不同呦!由於雖然Hard Link 的檔案看起來是有容量的,可是基本上仍是指向原來的檔案,因此囉,總體容量是沒有增大的啦!

而若是使用 -s 的參數時,就作成差很少是 Windows 底下的『快捷方式』的意思(SymbolicLink,較經常使用!)不過,須要特別注意的是, Linux 的 link 與 Windows 的快捷方式是不同的東西!舉個例子說,當你在Windows 創建一個快捷方式時,你能夠在這個快捷方式內修改任何數據,而你的原始數據並不會跟着變!不過,當你修改Linux 下的 link 檔案時,則更動的實際上是『原始檔』,呵呵,因此不論你的這個原始檔被連結到哪裏去,只要你修改了連結檔,呵呵!原始檔就跟着變囉!以上面爲例,因爲你使用-s 的參數創建一個名爲 passwd-soft 的檔案,則你修改 passwd-soft 時,其內容與passwd 徹底相同,而且,當你按下儲存以後,被改變的將是 passwd 這個檔案!

此外,若是你作了底下這樣的連結:
ln –s /bin /root/bin
那麼若是你進入 /root/bin 這個目錄下,『請注意呦!該目錄實際上是 /bin 這個目錄,由於你作了連結檔了!』因此,若是你進入/root/bin 這個剛剛創建的連結目錄,而且將其中的數據殺掉時,嗯! /bin 裏面的數據就統統不見了!這點請千萬注意!並非/root 底下的資料都是 root 的!還須要注意一下該屬性才行!

基本上, Symbolic link 的用途比較廣,因此您要特別留意 symbolic link的用法呢!將來必定還會經常用到的啦!


lnlinux中又一個很是重要 命令,它的功能是爲某一個文件在另一個位置創建一個同不的連接,這個 命令最經常使用的參數是-s,具體用法是: ln –s 源文件 目標文件。
  當咱們須要在不一樣的目錄,用到相同的文件時,咱們不須要在每個須要的目錄下都放一個必須相同的文件,咱們只要在某個固定的目錄,放上該文件,而後在其它的目錄下用 ln 命令連接(link)它就能夠,沒必要重複的佔用磁盤空間。例如: ln –s /bin/less/usr/local/bin/less
  -s 是代號(symbolic)的意思。
  這裏有兩點要注意:第一, ln 命令會保持每一處連接文件的同步性,也就是說,不論你改動了哪一處,其它的文件都會發生相同的變化;第二, ln的連接又軟連接和硬連接兩種,軟連接就是 ln –s ** **,它只會在你選定的位置上生成一個文件的鏡像,不會佔用磁盤空間,硬連接 ln ****,沒有參數-s, 它會在你選定的位置上生成一個和源文件大小相同的文件,不管是軟連接仍是硬連接,文件都保持同步變化。
  若是你用ls察看一個目錄時,發現有的文件後面有一個@的符號,那就是一個用 ln 命令生成的文件,用ls –l 命令去察看,就能夠看到顯示的link的路徑了。
  指令詳細說明
  指令名稱 : ln
  使用權限 : 全部使用者
  使用方式 : ln [options] source dist,其中 option 的格式爲 :
  [-bdfinsvF] [-S backup-suffix] [-V {numbered,existing,simple}]
  [--help] [--version] [--]
  說明 : Linux/Unix 檔案系統中,有所謂的連結(link),咱們能夠將其視爲檔案的別名,而連結又可分爲兩種 : 硬連結(hardlink)與軟連結(symboliclink),硬連結的意思是一個檔案能夠有多個名稱,而軟連結的方式則是產生一個特殊的檔案,該檔案的內容是指向另外一個檔案的位置。硬連結是存在同一個檔案系統中,而軟連結卻能夠跨越不一樣的檔案系統。
ln source dist 是產生一個連結(dist)到 source,至於使用硬連結或軟鏈結則由參數決定。
  不管是硬連結或軟鏈結都不會將本來的檔案複製一份,只會佔用很是少許的磁碟空間。
  -f : 鏈結時先將與 dist 同檔名的檔案刪除
  -d : 容許系統管理者硬鏈結本身的目錄
  -i : 在刪除與 dist 同檔名的檔案時先進行詢問
  -n : 在進行軟連結時,將 dist 視爲通常的檔案
  -s : 進行軟鏈結(symbolic link)
  -v : 在連結以前顯示其檔名
  -b : 將在鏈結時會被覆寫或刪除的檔案進行備份
  -S SUFFIX : 將備份的檔案都加上 SUFFIX 的字尾
  -V METHOD : 指定備份的方式
  --help : 顯示輔助說明
  --version : 顯示版本
  範例 :
  將檔案 yy 產生一個 symbolic link : zz
ln -s yy zz
  將檔案 yy 產生一個 hard link : zz
ln yy xx
相關文章
相關標籤/搜索