Linux軟鏈結和硬鏈結的區別?

時間 2021-12-20 17:45:46

1樓:李剛

對於軟鏈、硬鏈的內容整理,是為後續 pnpm 的內容做準備。

示例:cd /Users/ligang/Documents/github/practice/links/sources

# 在測試目錄下建立相應的測試檔案

touch test.js &&

echo

"console.log('links')" > test.js

檢視檔案資訊(inode)

ls -li test.js

8643193659 -rw-r--r-- 1 ligang staff 21

830 17:08 test.js

inode 為「索引節點」,儲存檔案的元資訊。其是 UNIX 作業系統中的一種資料結構,包含了與檔案系統中各個檔案相關的一些重要資訊。

建立硬鏈

ln ./sources/test.js test-hard-links.js

檢視檔案資訊(inode)

ls -li test-hard-links.js

8643193659 -rw-r--r-- 2 ligang staff 21

830 17:08 test-hard-links.js

其同原檔案的 inode 值相同,指向了物理硬碟的乙個區塊。

向 test-hard-links.js 追加內容

echo "console.log('test hard links')" >> test-hard-links.js

cat sources/test.js

console.log('links')

console.log('test hard links')

原檔案 test.js 同步更新了內容。

rm sources/test.js

cat test-hard-links.js

console.log('links')

console.log('test hard links')

通過硬鏈的檔案不受影響。

echo "console.log('test hard links again')" >> test-hard-links.js

ll sources/test.js

ls: sources/test.js: No such file or directory

建立軟鏈

ln -s sources/test.js test-soft-links.js

檢視檔案資訊(inode)

ls -li test-soft-links.js

8643223807 lrwxr-xr-x 1 ligang staff 15 8 31 13:27 test-soft-links.js -> sources/test.

js其同原檔案的 inode 值不同。

向 test-soft-links.js 追加內容

echo "console.log('soft hard links')" >> test-soft-links.js

cat sources/test.js

console.log('links')

console.log('soft hard links')

原檔案 test.js 同步更新了內容。

rm sources/test.js

cat test-soft-links.js

cat: test-soft-links.js: No such file or directory

報錯!沒有相應的檔案或目錄。

echo "console.log('test soft links again')" >> test-soft-links.js

ll sources/test.js

-rw-r--r-- 1 ligang staff 37B 8 31 13:35 sources/test.js

cat sources/test.js

cat test-soft-links.js

console.log('test soft links again')

只會向 test-hard-links.js 寫入,原檔案重新被建立,且 test-soft-links.js 和 sources/test.

js 內容都變成了最新修改內容(同 sources/test.js 保持一致)。

硬鏈為檔案內容建立別名;軟鏈為檔名建立別名。

建立硬鏈結實際上是為原檔案在儲存器中的資源再新建乙個入口,所以硬鏈結和原檔案指向的其實是儲存器中的同一處資源(同乙個 inode);而軟鏈結建立的是乙個指向,即鏈結檔案內的內容是指向原檔案的指標,它們是兩個檔案。

ln sources/test.js test-hard-links.js

ll -li sources/test.js

8643224333 -rw-r--r-- 2 ligang staff 37B 8 31 13:36 sources/test.js

根據上述闡述,鏈結計數為2,如何檢視呢?

方式一:尋找相同的 inode

find . -inum 8643224333

./test-hard-links.js

./sources/test.js

方式二:尋找相同的 filename

find . -samefile ./sources/test.js

./test-hard-links.js

./sources/test.js

上述 . 為當前目錄,可以通過此擴大或縮小查詢範圍。如果需要全域性查詢,可以設定為 /。

linux為什麼不能硬鏈結目錄?

悟覓 儘管支援目錄硬鏈結不是乙個容易的事情,然而NTFS能夠正確處理檔案與資料夾硬鏈結,管理員用好這項功能可大幅減少重複檔案,讓不同的應用在各自的工作目錄下,而不用維護複雜的跨目錄管理。 hitshouge 徐三響同學的例子一可以說是完美解決這個問題了。但我引申出了乙個問題。很多人都提到一點.和.都...

是否有辦法讓CPU和插槽的鏈結使用觸點

可行性很小 主機板的插槽並不平整,想獲得穩定的連線需要極大的壓力 並且你可以發現,Intel的處理器除了觸點外還有大量無處安放的電容器。 李明 CPU的封裝有多種方式 你提到的針腳封裝是PGA,針腳做在主機板上CPU上是觸點是LGA,直接焊在主機板上是BGA。不存在物理特性而必須使用某種封裝方式。實...

如何評價遊戲王新的鏈結怪獸和link召喚?

我現在對第六部的OCG環境很絕望。無論出什麼新系列,康一定要下滿,永遠有用的壞兔麗G,然後額外怪滿鏈結怪,如果要放其他的都叫做情懷。我是乙個融合玩家,英雄,月光,影依,在這個環境下都無法動彈。超量所有黑卡也不再被玩家投入,因為超量怪基本等於終端,融合怪也是。靈擺等於自斷雙臂一樣。唯有值得一戰的同調,...