【軟連接】
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:申請(qǐng)域名、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設(shè)、永平網(wǎng)站維護(hù)、網(wǎng)站推廣。
軟連接是linux中一個(gè)常用命令,它的功能是為某一個(gè)文件在另外一個(gè)位置建立一個(gè)同不的鏈接。相當(dāng)于window系統(tǒng)中的快捷方式
具體用法是:ln -s 源文件 目標(biāo)文件 或者 ln -s 源目錄 目標(biāo)目錄
當(dāng)我們需要在不同的目錄,用到相同的文件時(shí),我們不需要在每一個(gè)需要的目錄下都放一個(gè)必須相同的文件,我們只要在其它的 目錄下用ln命令鏈接(link)就可以,不必重復(fù)的占用磁盤空間。
例如:ln -s /home/test1 /data/test1
這樣我們就對(duì)/home/test1目錄創(chuàng)建了軟連接 ,在/data/test1中打開看到的就是/home/test1目錄下的文件
使用方式
創(chuàng)建軟鏈接
ln -s [源文件或目錄] [目標(biāo)文件或目錄]
例:當(dāng)前路徑創(chuàng)建test 引向/var/www/test 文件夾
ln –s /var/www/test ./test (此處建議一定要寫絕對(duì)路徑,最好寫到根目錄,而且當(dāng)前目錄中藥刪除test)
例:創(chuàng)建/var/test 引向/var/www/test 文件夾
ln –s /var/www/test /var/test
修改軟鏈接
這將會(huì)修改原有的鏈接地址為新的地址
ln –snf [新的源文件或目錄] [目標(biāo)文件或目錄]
例如:
創(chuàng)建一個(gè)軟鏈接
ln –s /var/www/test /var/test
修改指向的新路徑
ln –snf /var/www/test1 /var/test
刪除軟鏈接
和刪除普通的文件是一樣的,刪除都是使用rm來進(jìn)行操作,
例:刪除test
rm –rf test
正確的刪除方式(刪除軟鏈接,但不刪除實(shí)際數(shù)據(jù))
rm -rf ./test
錯(cuò)誤的刪除方式
rm -rf ./test/ (這樣就會(huì)把原來test下,源文件的內(nèi)容也刪除)
建議使用rm test 待顯示刪除確認(rèn)提示的時(shí)候
頁面出現(xiàn) rm: remove symbolic link test yes等字樣 說明你正在操作的是軟連接,而不是目錄。
一定要注意啊。亂用rm 還刪除目錄下的全部文件,還循環(huán),后果很嚴(yán)重,要再三確認(rèn)
ln常用參數(shù):
-f : 鏈結(jié)時(shí)先將與 dist 同檔名的檔案刪除
-d : 允許系統(tǒng)管理者硬鏈結(jié)自己的目錄
-i : 在刪除與 dist 同檔名的檔案時(shí)先進(jìn)行詢問
-n : 在進(jìn)行軟連結(jié)時(shí),將 dist 視為一般的檔案
-s : 進(jìn)行軟鏈結(jié)(symbolic link)
-v : 在連結(jié)之前顯示其檔名
-b : 將在鏈結(jié)時(shí)會(huì)被覆寫或刪除的檔案進(jìn)行備份
-S SUFFIX : 將備份的檔案都加上 SUFFIX 的字尾
-V METHOD : 指定備份的方式
--help : 顯示輔助說明
--version : 顯示版本
【硬連接】
硬連接指通過索引節(jié)點(diǎn)來進(jìn)行連接。在Linux的文件系統(tǒng)中,保存在磁盤分區(qū)中的文件不管是什么類型都給它分配一個(gè)編號(hào),稱為索引節(jié)點(diǎn)號(hào)(Inode Index)。在Linux中,多個(gè)文件名指向同一索引節(jié)點(diǎn)是存在的。一般這種連接就是硬連接。硬連接的作用是允許一個(gè)文件擁有多個(gè)有效路徑名,這樣用戶就可以建立硬連接到重要文件,以防止“誤刪”的功能。其原因如上所述,因?yàn)閷?duì)應(yīng)該目錄的索引節(jié)點(diǎn)有一個(gè)以上的連接。只刪除一個(gè)連接并不影響索引節(jié)點(diǎn)本身和其它的連接,只有當(dāng)最后一個(gè)連接被刪除后,文件的數(shù)據(jù)塊及目錄的連接才會(huì)被釋放。也就是說,文件真正刪除的條件是與之相關(guān)的所有硬連接文件均被刪除。
頭文件
#include unistd.h
函數(shù)原型
int link (const char * oldpath,const char * newpath);
說明
link()以參數(shù)newpath指定的名稱來建立一個(gè)新的連接(硬連接)到參數(shù)oldpath所指定的已存在文件。如果參數(shù)newpath指定的名稱為一已存在的文件則不會(huì)建立連接。函數(shù)在執(zhí)行成功時(shí)則返回0,失敗時(shí)則返回-1,錯(cuò)誤原因存于errno。 link()所建立的硬連接無法跨越不同文件系統(tǒng),如果需要請(qǐng)改用symlink()。
errno錯(cuò)誤代碼:
EXDEV 參數(shù)oldpath與newpath不是建立在同一文件系統(tǒng)。
EPERM 參數(shù)oldpath與newpath所指的文件系統(tǒng)不支持硬連接
EROFS 文件存在于只讀文件系統(tǒng)內(nèi)
EFAULT 參數(shù)oldpath或newpath 指針超出可存取內(nèi)存空間。
ENAMETOLLONG 參數(shù)oldpath或newpath太長
ENOMEM 核心內(nèi)存不足
EEXIST 參數(shù)newpath所指的文件名已存在。
EMLINK 參數(shù)oldpath所指的文件已達(dá)最大連接數(shù)目。
ELOOP 參數(shù)pathname有過多符號(hào)連接問題
ENOSPC 文件系統(tǒng)的剩余空間不足。
EIO I/O 存取錯(cuò)誤。
范例
/* 建立/etc/passwd 的硬連接為pass */ #includeunistd.hmain(){link(/etc/passwd,pass);}
1. 先來了解一下Linux數(shù)據(jù)是如何保存和查詢的
對(duì)操作系統(tǒng)來說,數(shù)據(jù)分為兩種:1. 用戶數(shù)據(jù) (user data) 2.元數(shù)據(jù) (metadata)。用戶數(shù)據(jù)就是保存和記錄文件的內(nèi)容。比如一個(gè)1M的ppt文件,500K的txt文件。這都屬于用戶數(shù)據(jù)。這個(gè)文件總有屬性吧,比如大小、修改時(shí)間、訪問時(shí)間、創(chuàng)建時(shí)間、存儲(chǔ)的位置(文件所在的inode)、文件創(chuàng)建者等等信息。這些屬性信息或者理解為匯總信息,我們稱它為元數(shù)據(jù)。一句話,用戶數(shù)據(jù)是文件的真實(shí)內(nèi)容,而元數(shù)據(jù)則是匯總信息。
在 Linux 中,元數(shù)據(jù)中的 inode 號(hào)(inode 號(hào)即索引節(jié)點(diǎn)號(hào))才是文件的唯一標(biāo)識(shí)而非文件名。文件名僅是為了方便人們的記憶和使用,系統(tǒng)或程序通過 inode 號(hào)尋找正確的文件數(shù)據(jù)塊。
2. 查看文件對(duì)應(yīng)的inode號(hào)
134474678 latest.tar.gz
linux查看文件對(duì)應(yīng)的inode號(hào)
可以看出latest.tar.gz這個(gè)文件, inode 號(hào)是134474678,Linux查找讀寫該文件時(shí),以為個(gè)inode號(hào)碼為標(biāo)識(shí),而不是文件名。文件名類似于網(wǎng)站域名,僅僅是方便人類記憶。
也就是說, inode134474678有一個(gè)硬鏈接,它就是latest.tar.gz。
3. 根據(jù)inode號(hào)查找對(duì)應(yīng)的文件
那么,問題來了,系統(tǒng)上有沒有第二個(gè)文件,它的inode號(hào)碼也是13447467。
使用find查找一下:
查找結(jié)果如下:
/root/latest.tar.gz
/root/latest2.tar.gz
linux根據(jù)inode號(hào)查找對(duì)應(yīng)的文件
硬盤上真的有第二個(gè)文件它的inode號(hào)碼也是134474678,像這種情況,我們認(rèn)為inode134474678有兩個(gè)硬鏈接。當(dāng)然,這是本文作者提前準(zhǔn)備好的。
為解決文件的共享使用,Linux 系統(tǒng)引入了兩種鏈接:硬鏈接 (hard link) 與軟鏈接(又稱符號(hào)鏈接,即 soft link 或 symbolic link)。鏈接為 Linux 系統(tǒng)解決了文件的共享使用,還帶來了隱藏文件路徑、增加權(quán)限安全及節(jié)省存儲(chǔ)等好處。
4. 確認(rèn)硬鏈接的數(shù)量
查看一下文件latest.tar.gz
輸出結(jié)果如下:
-rwxr-xr-x. 2 root root 8743850 Oct 11 15:00 latest.tar.gz
請(qǐng)留意輸出的結(jié)果中的數(shù)字2,表示該文件存在2個(gè)硬鏈接。
正常情況下,一個(gè)inode只有一個(gè)鏈接,如下例
輸出結(jié)果:
-rw-r--r--. 1 root root 9 Nov 21 11:39 abc.txt
請(qǐng)留意輸出的結(jié)果中的數(shù)字1,表示該文件只存在1個(gè)硬鏈接,默認(rèn)情況下,文件都是只有一個(gè)硬鏈接的。
5. 查看軟鏈接
再來看一個(gè)文件
lrwxrwxrwx. 1 root root 15 Sep 26 15:57 /dev/stdout - /proc/self/fd/1
linux查看軟鏈接
我們發(fā)現(xiàn),/dev/stdout實(shí)際上指向另一個(gè)文件/proc/self/fd/1,這就是軟鏈接。類似于Windows系統(tǒng)上的快捷方式。
6. 軟鏈接與硬鏈接的區(qū)別
6.1 軟鏈接特點(diǎn)
6.2 硬鏈接特點(diǎn)
ln鏈接符原理如下:
Linux ln鏈接符原理圖
7. 創(chuàng)建文件的鏈接
Linux ln命令是一個(gè)非常重要而且常用命令,它用于為文件或者目錄創(chuàng)建鏈接。
7.1 創(chuàng)建軟鏈接
創(chuàng)建一個(gè)文件,用于演示軟鏈接。
創(chuàng)建軟鏈接示例:
檢查結(jié)果:
輸出文件屬性
lrwxrwxrwx. 1 root root 8 Nov 26 17:48 soft123.txt - soft.txt
linux創(chuàng)建軟鏈接
可以看出這個(gè)文件指向當(dāng)前目錄soft.txt,配置成功。7.2 創(chuàng)建硬鏈接
創(chuàng)建一個(gè)文件,用于演示硬鏈接。
創(chuàng)建硬鏈接,沒有使用選項(xiàng)
檢查結(jié)果:
輸出文件屬性:
-rw-r--r--. 2 root root 0 Nov 26 17:47 hard123.txt
linux創(chuàng)建硬鏈接
留意以上輸出數(shù)字2,表明該文件有2個(gè)副本。
8. 總結(jié)
ln命令可以創(chuàng)建文件的副本,也可以創(chuàng)建軟鏈接。
這是linux中一個(gè)非常重要命令,請(qǐng)大家一定要熟悉。它的功能是為某一個(gè)文件在另外一個(gè)位置建立一個(gè)同不的鏈接,這個(gè)命令最常用的參數(shù)是-s,具體用法是:ln
-s
源文件
目標(biāo)文件。
當(dāng)
我們需要在不同的目錄,用到相同的文件時(shí),我們不需要在每一個(gè)需要的目錄下都放一個(gè)必須相同的文件,我們只要在某個(gè)固定的目錄,放上該文件,然后在其它的
目錄下用ln命令鏈接(link)它就可以,不必重復(fù)的占用磁盤空間。例如:ln
-s
/bin/less
/usr/local/bin/less-s
是代號(hào)(symbolic)的意思。
這
里有兩點(diǎn)要注意:第一,ln命令會(huì)保持每一處鏈接文件的同步性,也就是說,不論你改動(dòng)了哪一處,其它的文件都會(huì)發(fā)生相同的變化;第二,ln的鏈接又軟鏈接
和硬鏈接兩種,軟鏈接就是ln
-s
**
**,它只會(huì)在你選定的位置上生成一個(gè)文件的鏡像,不會(huì)占用磁盤空間,硬鏈接ln
**
**,沒有參數(shù)-s,
它會(huì)在你選定的位置上生成一個(gè)和源文件大小相同的文件,無論是軟鏈接還是硬鏈接,文件都保持同步變化。
如果你用ls察看一個(gè)目錄時(shí),發(fā)現(xiàn)有的文件后面有一個(gè)@的符號(hào),那就是一個(gè)用ln命令生成的文件,用ls
-l命令去察看,就可以看到顯示的link的路徑了。摘自
ComeOnTom的專欄
本文名稱:link命令linux link命令代碼意思
網(wǎng)頁URL:http://chinadenli.net/article46/hgcchg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、虛擬主機(jī)、軟件開發(fā)、App開發(fā)、網(wǎng)站收錄、手機(jī)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)