- 從本質(zhì)看火惊,硬鏈接是指向同一個(gè)文件在目錄項(xiàng)上不同的文件名,軟鏈接是與原文件不同的一個(gè)文件奔垦。
- 從inode號(hào)看屹耐,硬鏈接指向的都是同一個(gè)inode號(hào),因?yàn)樗鼈兌际峭粋€(gè)文件椿猎,而軟鏈接是不同的inode號(hào)惶岭,因?yàn)樗c源文件并不是同一個(gè)文件。
- 從文件的鏈接數(shù)看鸵贬,硬鏈接:文件的鏈接數(shù)=硬鏈接的個(gè)數(shù)俗他,軟鏈接:源文件的鏈接數(shù)與軟鏈接無關(guān)。
- 從文件類型來看阔逼,原文件是什么文件類型兆衅,硬鏈接就是什么文件類型,而軟鏈接的文件類型只能是符號(hào)鏈接
- 從跨分區(qū)情況看嗜浮,硬鏈接不能指向不同的分區(qū)羡亩,因?yàn)樗鼈兌际峭粋€(gè)文件,一個(gè)文件同存在于一個(gè)分區(qū)危融,而軟鏈接可以指向不同的分區(qū)畏铆,因?yàn)樗c源文件并不是同一個(gè)文件。
- 從作用于目錄看吉殃,硬鏈接不用作用于目錄辞居,因?yàn)槿绻茏饔糜谀夸浛锌赡苄纬伤姥h(huán)。而軟鏈接可以作用于目錄瓦灶。
- 從鏈接與原文件的關(guān)系看鸠删,硬鏈接與文件本身是等價(jià)的,硬鏈接的內(nèi)容就是文件的內(nèi)容贼陶,而軟鏈接是原文件的一個(gè)指針而且刃泡,其內(nèi)容并不是原文件的內(nèi)容,而是原文件路徑的記錄碉怔。
- 從使用格式看烘贴,硬鏈接:ln filename [linkname],軟鏈接:ln -s filename [linkname]
- 從命令在使用相對(duì)路徑的語法看撮胧,硬鏈接的filename的相對(duì)路徑桨踪,是對(duì)于當(dāng)前工作目錄的,而軟鏈接的filename的相對(duì)路徑趴樱,是相對(duì)于linkname的馒闷。
實(shí)例:
#在/data/目錄下創(chuàng)建文件f1
[root@CentOS7 data]#touch f1
#創(chuàng)建f1的硬鏈接f1.hardlink
[root@CentOS7 data]#ln f1 f1.hardlink
#查看f1和f1.hardlink元數(shù)據(jù)酪捡,是完全相同的
[root@CentOS7 data]#stat f1 f1.hardlink
File: ‘f1’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 803h/2051d Inode: 67 Links: 2
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-12-08 16:16:20.141903697 +0800
Modify: 2019-12-08 16:16:20.141903697 +0800
Change: 2019-12-08 16:20:41.099885362 +0800
Birth: -
File: ‘f1.hardlink’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 803h/2051d Inode: 67 Links: 2
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-12-08 16:16:20.141903697 +0800
Modify: 2019-12-08 16:16:20.141903697 +0800
Change: 2019-12-08 16:20:41.099885362 +0800
#創(chuàng)建f1的軟鏈接
[root@CentOS7 data]#ln -s f1 f1.softlink
#查看f1 f1.softlink的元數(shù)據(jù)叁征,兩者不一樣
[root@CentOS7 data]#stat f1 f1.softlink
File: ‘f1’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 803h/2051d Inode: 67 Links: 2
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-12-08 16:16:20.141903697 +0800
Modify: 2019-12-08 16:16:20.141903697 +0800
Change: 2019-12-08 16:20:41.099885362 +0800
Birth: -
File: ‘f1.softlink’ -> ‘f1’
Size: 2 Blocks: 0 IO Block: 4096 symbolic link
Device: 803h/2051d Inode: 68 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-12-08 16:28:44.371851407 +0800
Modify: 2019-12-08 16:28:44.371851407 +0800
Change: 2019-12-08 16:28:44.371851407 +0800
Birth: -
#創(chuàng)建一個(gè)f2.hardlink硬鏈接指向一個(gè)不同分區(qū)的文件,創(chuàng)建失敗
[root@CentOS7 data]#ln /boot/config-3.10.0-957.el7.x86_64 f2.hardlink
ln: failed to create hard link ‘f2.hardlink’ => ‘/boot/config-3.10.0-957.el7.x86_64’: Invalid cross-device link
#創(chuàng)建一個(gè)f2.softlink軟鏈接指向一個(gè)不同分區(qū)的文件逛薇,創(chuàng)建成功
[root@CentOS7 data]#ln -s /boot/config-3.10.0-957.el7.x86_64 f2.softlink
[root@CentOS7 data]#ll f2.softlink
lrwxrwxrwx 1 root root 34 Dec 8 16:34 f2.softlink -> /boot/config-3.10.0-957.el7.x86_64
#新建目錄d1
[root@CentOS7 data]#mkdir d1
#創(chuàng)建d1的硬鏈接捺疼,不讓創(chuàng)建
[root@CentOS7 data]#ln d1 d1.hardlink
ln: ‘d1’: hard link not allowed for directory
#創(chuàng)建d1的軟鏈接,成功
[root@CentOS7 data]#ln -s d1 d1.softlink
[root@CentOS7 data]#ll d1.softlink
lrwxrwxrwx 1 root root 2 Dec 8 16:43 d1.softlink -> d1
#查看/data/下的內(nèi)容可知永罚,f1有個(gè)硬鏈接叫f1.hardlink啤呼,有個(gè)軟鏈接叫f1.softlink
[root@CentOS7 data]#ll -i
total 0
70 drwxr-xr-x 2 root root 6 Dec 8 16:41 d1
71 lrwxrwxrwx 1 root root 2 Dec 8 16:43 d1.softlink -> d1
67 -rw-r--r-- 2 root root 0 Dec 8 16:16 f1
67 -rw-r--r-- 2 root root 0 Dec 8 16:16 f1.hardlink
68 lrwxrwxrwx 1 root root 2 Dec 8 16:28 f1.softlink -> f1
69 lrwxrwxrwx 1 root root 34 Dec 8 16:34 f2.softlink -> /boot/config-3.10.0-957.el7.x86_64
#對(duì)f1操作寫入內(nèi)容,f1的大小變更了呢袱,f1.hardlink的大小也跟著變化官扣,而f2.softlink的大小沒有變化
[root@CentOS7 data]#nano f1
GNU nano 2.3.1 File: f1
a
b
c
[root@CentOS7 data]#ll
total 8
drwxr-xr-x 2 root root 6 Dec 8 16:41 d1
lrwxrwxrwx 1 root root 2 Dec 8 16:43 d1.softlink -> d1
-rw-r--r-- 2 root root 6 Dec 8 16:53 f1
-rw-r--r-- 2 root root 6 Dec 8 16:53 f1.hardlink
lrwxrwxrwx 1 root root 2 Dec 8 16:28 f1.softlink -> f1
lrwxrwxrwx 1 root root 34 Dec 8 16:34 f2.softlink -> /boot/config-3.10.0-957.el7.x86_64
#在filename使用相對(duì)路徑的情況下,在/data/d1下創(chuàng)建f1的硬鏈接f1.hardlink羞福,filename是相對(duì)于當(dāng)前工作目錄的
[root@CentOS7 data]#ln f1 d1/f1.hardlink
[root@CentOS7 data]#ll -i f1 d1/f1.hardlink
67 -rw-r--r-- 3 root root 6 Dec 8 16:53 d1/f1.hardlink
67 -rw-r--r-- 3 root root 6 Dec 8 16:53 f1
#而如果軟鏈接惕蹄,那么filename是相對(duì)于linkname的
[root@CentOS7 data]#ln -s ../f1 d1/f1.softlink
[root@CentOS7 data]#ll -i f1 d1/f1.softlink
72 lrwxrwxrwx 1 root root 5 Dec 8 17:19 d1/f1.softlink -> ../f1
67 -rw-r--r-- 3 root root 6 Dec 8 16:53 f1