硬連結的用途

看板Linux作者 (就是愛希爾)時間4年前 (2020/05/08 21:36), 編輯推噓18(19158)
留言78則, 17人參與, 4年前最新討論串1/2 (看更多)
最近看軟連結跟硬連結的比較,有整理一下筆記資訊,對於硬連結的觀念是都使用同一個 inode,省硬碟空間等等,但是對於”實務”上還是不是很了解大家平常都使用在那邊? 再請大家給點指教,謝謝 [Linux筆記] 軟連結與硬連結 # /與/home位於不同的partition ubuntu@ubuntu:~/workspace$ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda1 7092728 5093676 1615720 76% / none 4 0 4 0% /sys/fs/cgroup udev 2013844 4 2013840 1% /dev tmpfs 404788 1036 403752 1% /run none 5120 0 5120 0% /run/lock none 2023940 88 2023852 1% /run/shm none 102400 24 102376 1% /run/user /dev/sda3 17414428 1007348 15499356 7% /home # 分別在/與~家目錄建立檔案與目錄 ubuntu@ubuntu:~/workspace$ sudo touch /file1 ubuntu@ubuntu:~/workspace$ touch file2 ubuntu@ubuntu:~/workspace$ mkdir folder1 # 硬連結不支援跨partition ubuntu@ubuntu:~/workspace$ ln /file1 hardfile1 ln: failed to create hard link ‘hardfile1’ => ‘/file1’: Invalid cross-devi ce link ubuntu@ubuntu:~/workspace$ ln -s /file1 softfile1 ubuntu@ubuntu:~/workspace$ ln file2 hardfile2 # 硬連結不支援目錄 ubuntu@ubuntu:~/workspace$ ln folder1 hardfolder1 ln: ‘folder1’: hard link not allowed for directory ubuntu@ubuntu:~/workspace$ ln -s folder1 softfolder1 # 軟連結的檔案inode不同(965, 667577),硬連結的檔案inode相同(667572) # 軟連結的屬性不同為變777(rwx),硬連結的屬性相同(-rw-rw-r--) ubuntu@ubuntu:~/workspace$ ls -il total 4 667572 -rw-rw-r-- 2 ubuntu ubuntu 0 May 7 17:08 file2 667576 drwxrwxr-x 2 ubuntu ubuntu 4096 May 7 17:08 folder1 667572 -rw-rw-r-- 2 ubuntu ubuntu 0 May 7 17:08 hardfile2 667577 lrwxrwxrwx 1 ubuntu ubuntu 6 May 7 17:08 softfile1 -> /file1 667578 lrwxrwxrwx 1 ubuntu ubuntu 7 May 7 17:08 softfolder1 -> folder1 ubuntu@ubuntu:~/workspace$ ls -il /file1 965 -rw-r--r-- 1 root root 0 May 7 17:07 /file1 # 編輯原始檔案file2,因為inode都一樣(667572),硬連結的檔案大小也會變大 ubuntu@ubuntu:~/workspace$ vim file2 ubuntu@ubuntu:~/workspace$ ls -il total 12 667572 -rw-rw-r-- 2 ubuntu ubuntu 155 May 7 17:09 file2 667576 drwxrwxr-x 2 ubuntu ubuntu 4096 May 7 17:08 folder1 667572 -rw-rw-r-- 2 ubuntu ubuntu 155 May 7 17:09 hardfile2 667577 lrwxrwxrwx 1 ubuntu ubuntu 6 May 7 17:08 softfile1 -> /file1 667578 lrwxrwxrwx 1 ubuntu ubuntu 7 May 7 17:08 softfolder1 -> folder1 # 刪除原檔案,軟連結就會連結失效(嫁雞隨雞),硬連結檔案還會存在(分家) ubuntu@ubuntu:~/workspace$ sudo rm -rf /file1 ubuntu@ubuntu:~/workspace$ rm -rf file2 ubuntu@ubuntu:~/workspace$ ls -il total 8 667576 drwxrwxr-x 2 ubuntu ubuntu 4096 May 7 17:08 folder1 667572 -rw-rw-r-- 1 ubuntu ubuntu 155 May 7 17:09 hardfile2 667577 lrwxrwxrwx 1 ubuntu ubuntu 6 May 7 17:08 softfile1 -> /file1 667578 lrwxrwxrwx 1 ubuntu ubuntu 7 May 7 17:08 softfolder1 -> folder1 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.136.11.36 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1588945001.A.ACF.html

05/09 07:38, 4年前 , 1F
我也很好奇hard link到底都用在哪些地方
05/09 07:38, 1F

05/09 11:54, 4年前 , 2F
soft link有可能會斷鍊而hard link不會,可以想成hardlink
05/09 11:54, 2F

05/09 11:54, 4年前 , 3F
是一群人共同保有1個檔案,直到最後1個人丟棄(delete)該檔
05/09 11:54, 3F

05/09 11:55, 4年前 , 4F
案之前,檔案都會一直存在,任何1人也不用擔心別人刪除讓自
05/09 11:55, 4F

05/09 11:55, 4年前 , 5F
己沒得用
05/09 11:55, 5F

05/09 14:17, 4年前 , 6F
以前有的時候會用硬連結在不分享資料夾的情況下分享單一
05/09 14:17, 6F

05/09 14:18, 4年前 , 7F
檔案給別人,還有的時候有些程式遇到軟連結和硬連結的行
05/09 14:18, 7F

05/09 14:19, 4年前 , 8F
為會不太一樣,例如函式庫搜尋路徑可能不同之類的。
05/09 14:19, 8F

05/09 14:23, 4年前 , 9F
話說 FreeBSD 跟 Linux 相比好像很喜歡用硬連結,連功能
05/09 14:23, 9F

05/09 14:24, 4年前 , 10F
現在還會常用到嗎?看起來好像不好用
05/09 14:24, 10F

05/09 14:24, 4年前 , 11F
類似 busybox 的程式都是硬連結個 146 次而不用軟連結。
05/09 14:24, 11F

05/09 14:25, 4年前 , 12F
什麼東西還會常用到嗎?
05/09 14:25, 12F

05/09 16:11, 4年前 , 13F
所以就是在不佔用空間的情況下複製檔案的意思?
05/09 16:11, 13F

05/09 16:11, 4年前 , 14F
這樣我很好奇的是如果在A磁區上的檔案在B磁區建立了硬連
05/09 16:11, 14F

05/09 16:12, 4年前 , 15F
這樣是不是我刪除A磁區上的檔案後卻仍無法釋出空間?
05/09 16:12, 15F

05/09 19:01, 4年前 , 16F
hard link 建立只能夠在同個磁區屬於區塊空間提供共用.
05/09 19:01, 16F

05/09 19:01, 4年前 , 17F
系統會建立建立幾個人共用。刪除時參考建立數值會減少,
05/09 19:01, 17F

05/09 19:01, 4年前 , 18F
當為0時候空間才真正刪除釋出
05/09 19:01, 18F

05/09 19:35, 4年前 , 19F
被 pbuilder 搞爆一次 rootfs 就不敢玩 hardlink 了 XD
05/09 19:35, 19F

05/10 04:17, 4年前 , 20F
原來不同磁區就不能硬連,感謝解說
05/10 04:17, 20F

05/10 10:34, 4年前 , 21F
上面推文應該是要講partition/分區, 磁區是sector,早年軟
05/10 10:34, 21F

05/10 10:35, 4年前 , 22F
硬碟的儲存資料最小單位. CHS(Cylinder/Head/Sector)模式
05/10 10:35, 22F

05/10 10:36, 4年前 , 23F
後來改LBA模式sector這單字就少用了
05/10 10:36, 23F

05/10 11:32, 4年前 , 24F
謝謝樓上.只是目前架構複雜lvm等,用分割區也有點怪
05/10 11:32, 24F

05/10 12:27, 4年前 , 25F
看來就檔案系統這用詞最恰當了(?
05/10 12:27, 25F

05/10 19:08, 4年前 , 26F
樓上其實是正解.我只是因為看到推文中提及磁區,才用分區
05/10 19:08, 26F

05/10 19:08, 4年前 , 27F
來對應,通常一分割區一檔案系統,但像raid,lvm這些狀況,一
05/10 19:08, 27F

05/10 19:09, 4年前 , 28F
個檔案系統包含數個分割區,所以hard link不能跨檔案系統
05/10 19:09, 28F

05/10 19:09, 4年前 , 29F
才是正確說法
05/10 19:09, 29F

05/10 23:42, 4年前 , 30F
LVM 不是很危險嗎?
05/10 23:42, 30F

05/10 23:43, 4年前 , 31F
話說看別人介紹 openZFS 看起來和 LVM 好像
05/10 23:43, 31F

05/11 00:50, 4年前 , 32F
我也很好奇 LVM 到底適不適合用.. 之前也聽說過很危險
05/11 00:50, 32F

05/11 00:50, 4年前 , 33F
但我現在管理的環境滿滿的 LVM... 不知道該說什麼好
05/11 00:50, 33F

05/11 00:54, 4年前 , 34F
不過我是使用在 VM 裡面的虛擬硬碟就是了
05/11 00:54, 34F

05/11 01:51, 4年前 , 35F
LVM 大概跟你硬碟壞掉一樣危險
05/11 01:51, 35F

05/11 10:00, 4年前 , 36F
lvm是volume管理一種常見管理方式,擔心硬碟故障你傳統
05/11 10:00, 36F

05/11 10:00, 4年前 , 37F
需要後端搭配適當的硬體raid與定期備份機制. 其實目前
05/11 10:00, 37F

05/11 10:00, 4年前 , 38F
lvm 也可以用多個硬碟來源當基底再上面建立 raid5這種
05/11 10:00, 38F

05/11 10:00, 4年前 , 39F
架構,這年頭的lvm已經不是當年的阿蒙了
05/11 10:00, 39F

05/11 21:10, 4年前 , 40F
那 openZFS 呢,看起來邏輯很像
05/11 21:10, 40F

05/11 21:11, 4年前 , 41F
然後如果重灌,LVM 會出事嗎?
05/11 21:11, 41F

05/11 21:53, 4年前 , 42F
我的不會 XD
05/11 21:53, 42F

05/11 23:34, 4年前 , 43F
zfs在linux上面還不適合當production環境
05/11 23:34, 43F

05/12 18:42, 4年前 , 44F
BT不同站點輔種時會用hard link
05/12 18:42, 44F

05/12 19:16, 4年前 , 45F
為何?不是比 LVM 好嗎?
05/12 19:16, 45F

05/12 19:36, 4年前 , 46F
zfs在linux本來就不是穩定的東西,再者lvm目前許多功能
05/12 19:36, 46F

05/12 19:36, 4年前 , 47F
都涵蓋了,像是快照與raid都都是,正式上線環境還比較
05/12 19:36, 47F

05/12 19:36, 4年前 , 48F
單純與穩定
05/12 19:36, 48F

05/12 21:06, 4年前 , 49F
說 ZFS on Linux 不穩定的人真的有用過 ZFS 嗎? 呵呵
05/12 21:06, 49F

05/12 21:09, 4年前 , 50F
歡迎來 pve.tw 參觀各種使用 ZFS on Linux 的
05/12 21:09, 50F

05/12 21:09, 4年前 , 51F
Production Datacenter
05/12 21:09, 51F

05/12 22:53, 4年前 , 52F
想知道btrfs和zfs的比較
05/12 22:53, 52F

05/12 23:47, 4年前 , 53F
查了一下,原來壞軌在 LVM 是有救的,我還以為他和
05/12 23:47, 53F

05/12 23:47, 4年前 , 54F
RAID0 一樣會沒救
05/12 23:47, 54F

05/12 23:48, 4年前 , 55F
所以 ZFS 和 LVM 究竟……
05/12 23:48, 55F

05/13 03:48, 4年前 , 56F
btrfs當初看有人分析各種檔案系統整體看起來最優就用了
05/13 03:48, 56F

05/13 03:48, 4年前 , 57F
速度和空間的使用都還滿不錯的,但是爆炸只能用自己工具
05/13 03:48, 57F

05/13 03:49, 4年前 , 58F
來救,像testdisk就沒辦法偵測到裡面任何東西
05/13 03:49, 58F

05/13 06:04, 4年前 , 59F
開機碟用btrfs有點後悔就是XD grub不能儲存開機選項XD
05/13 06:04, 59F

05/13 11:36, 4年前 , 60F
data center 用 zfs in linux 的確值得觀摩,想參觀。
05/13 11:36, 60F

05/13 11:39, 4年前 , 61F
記得當初 zfs licence 爭議部分目前不知道是否解了
05/13 11:39, 61F

05/13 12:02, 4年前 , 62F
可是他名稱有個 open 耶,所以其實他不夠 open 嗎?
05/13 12:02, 62F

05/13 12:02, 4年前 , 63F
openZFS
05/13 12:02, 63F

05/13 13:21, 4年前 , 64F
通常前面有加open的套件,多半是有對應的封閉原始碼套件,
05/13 13:21, 64F

05/13 13:21, 4年前 , 65F
如solaris/opensolaris, jdk/openjdk 等等
05/13 13:21, 65F

05/13 22:43, 4年前 , 66F
ZFS 的 license 爭議是指 CDDL 和 GPL 之間的問題吧
05/13 22:43, 66F

05/14 02:55, 4年前 , 67F
對的。此外目前進行中的 linux kernel 5版本要使用 zfs
05/14 02:55, 67F

05/14 02:55, 4年前 , 68F
目前也有問題。只能夠說 Oracle 收購 Sun 之後真的後續
05/14 02:55, 68F

05/14 02:55, 4年前 , 69F
一堆事情,Java 就是....
05/14 02:55, 69F

05/14 13:24, 4年前 , 70F
所以現在OpenZFS用另外維護kernel module的方式開發
05/14 13:24, 70F

05/14 13:25, 4年前 , 71F
加上有Canonical爸爸撐腰就確定沒問題了吧?
05/14 13:25, 71F

05/14 13:28, 4年前 , 72F
現在連 FreeBSD stable/current 都可以再裝 OpenZFS 了
05/14 13:28, 72F

05/14 18:39, 4年前 , 73F
rsync 可用hardlink做 incremental backup
05/14 18:39, 73F

05/15 21:22, 4年前 , 74F
虛擬分身和實體分身
05/15 21:22, 74F

05/16 15:49, 4年前 , 75F
前幾天聽說 OpenZFS 終於出新版支援 Linux 5.6 了
05/16 15:49, 75F

05/17 02:12, 4年前 , 76F
但 5.7 差不多也要出來了...
05/17 02:12, 76F

05/17 23:03, 4年前 , 77F
git checkout 跟 worktree 就是用硬連結做的
05/17 23:03, 77F

05/23 15:44, 4年前 , 78F
MacOS的內建備份工具也是
05/23 15:44, 78F
文章代碼(AID): #1UjM1fhF (Linux)
討論串 (同標題文章)
以下文章回應了本文
4
19
完整討論串 (本文為第 1 之 2 篇):
18
78
4
19
文章代碼(AID): #1UjM1fhF (Linux)