Linux下的硬链接和符号链接

上一篇 / 下一篇  2012-06-21 10:43:06 / 个人分类:Linux

硬链接和符号链接(软链接):

#|?i;xG*VTQ'h ]r0  Linux文件系统最重要的特点之一是它的文件链接。链接是对文件的引用,这样您可以让文件在文件系统中多处被看到。保存在磁盘分区中的文件不管是什么类型都给它分 配一个编号,称为索引节点号inode 。在 Linux 中,链接可以如同原始文件一样来对。链接可以与普通的文件一样被执行、编辑和访问。对系统中的其他应用程序而言,链接就是它所对应的原始文件。当您通过链 接对文件进行编辑时,您编辑的实际上是原始文件。链接不是副本。有两种类型的链接:硬链接和符号链接(软链接)。

Y$p@0} Z{a0

)M(a1|,Xz5hx#V B0  硬链接只能引用同一文 件系统中的文件。它引用的是文件在文件系统中的物理索引(也称为 inode)。当您移动或删除原始文件时,硬链接不会被破坏,因为它所引用的是文件的物理数据而不是文件在文件结构中的位置。硬链接的文件不需要用户有访 问原始文件的权限,也不会显示原始文件的位置,这样有助于文件的安全。如果您删除的文件有相应的硬链接,那么这个文件依然会保留,直到所有对它的引用都被 删除。51Testing软件测试网yA*G+~c!f

5`5k C-u+~5M0  软连接,其实就是新建立一个文件,这个文件就是专门用来指向别的文件的(那就和windows 下的快捷方式的那个文件有很接近的意味)。软连接产生的是一个新的文件,但这个文件的作用就是专门指向某个文件的,删了这个软连接文件,那就等于不需要这 个连接,和原来的存在的实体原文件没有任何关系,但删除原来的文件,则相应的软连接不可用(cat那个软链接文件,则提示“没有该文件或目录“)。51Testing软件测试网7d&M hA5_ TV?,_ S;_&c

51Testing软件测试网Ah_,T)QQ(t

  硬链接与软链接的区别:51Testing软件测试网J R!E9UjH

51Testing软件测试网 d!o*UP do6MS5M

   硬连接是不会建立inode的,他只是在文件原来的inode link count域再增加1而已,也因此硬链接是不可以跨越文件系统的。相反都是软连接会重新建立一个inode,当然inode的结构跟其他的不一样,他只是 一个指明源文件的字符串信息。一旦删除源文件,那么软连接将变得毫无意义。而硬链接删除的时候,系统调用会检查inode link count的数值,如果他大于等于1,那么inode不会被回收。因此文件的内容不会被删除。51Testing软件测试网gQ8VA8TJ w

S3L9oj}3p;X#p0  硬链接实际上是为文件建一个别名,链接文件和原文件实际上是同一个文件。可以通过ls -i来查看一下,这两个文件的inode号是同一个,说明它们是同一个文件;而软链接建立的是一个指向,即链接文件内的内容是指向原文件的指针,它们是两个文件。

v@ R\&^ m5O1JN3x0

}@L#H ]~0   软链接可以跨文件系统,硬链接不可以;软链接可以对一个不存在的文件名(filename)进行链接(当然此时如果你vi这个软链接文件,linux会 自动新建一个文件名为filename的文件),硬链接不可以(其文件必须存在,inode必须存在);软链接可以对目录进行连接,硬链接不可以。两种链 接都可以通过命令 ln 来创建。ln 默认创建的是硬链接。使用 -s 开关可以创建软链接。51Testing软件测试网/}"Z8I OT x V_

51Testing软件测试网FK(} y_c3b.f i

  现在研究一下硬链接和符号链接的创建和性质

_ F;NXs$t X$p){051Testing软件测试网K^y5g`s2w;H\

  首先用cp和ln命令都可以创建硬链接和符号链接。51Testing软件测试网 rd&Y&|U+?b)}0yJ

1re"dt#z&T0  创建硬链接及其性质:51Testing软件测试网s&R\:I\:h[

[guo@guo ~]$ cp -l link link.back
a[(? QD(o0[guo@guo ~]$ln link link.back1
nNrH9YQ?%qI0[guo@guo ~]$ ls -al |grep 'link*'
@+o%k`gh6ce0-rw-rw-r--   3 guo  guo          38  4月  8 20:24 link51Testing软件测试网1C}9[ST,V&V[M
-rw-rw-r--   3 guo  guo          38  4月  8 20:24 link.back51Testing软件测试网9nU \/@0nG$_c q
-rw-rw-r--   1 guo  guo          38  4月  8 20:26 link.back1
51Testing软件测试网d rU2OcH$|1|)w

  创建的硬链接文件与原文件的文件大小相同,文件属性为普通文件。

B.X:T)\ y051Testing软件测试网zS2_eS0g

  当修改任意个文件内容均可是三个文件内容同时改变。51Testing软件测试网 V2A$B5]G(\

[guo@guo ~]$ cat link51Testing软件测试网0T C K9Zy.fA8C PQ
shell
#['kW+M]:~{i/k5H0[guo@guo ~]$ cat link.back*51Testing软件测试网2x[9DtP
shell
U S9OnuV0shell51Testing软件测试网/^G"_7U[ sU
[guo@guo ~]$ cat link51Testing软件测试网3UrF*j"B
shell
`x&?q7Z X:?.G"K0[guo@guo ~]$ cat link.back51Testing软件测试网w$t.f:P#a&YKz0Sn
shell
)t9\?AA0[guo@guo ~]$ cat link.back151Testing软件测试网4H2x3u`)|$U)t
shell51Testing软件测试网MI|mKl.|*DS
[guo@guo ~]$ echo "shell" >>link.back51Testing软件测试网gT-vG g)s9B
[guo@guo ~]$ cat link.back
.]vn"~ax;G8gr7m0shell
n t[hd8u0shell
'xCw r(sHe0[guo@guo ~]$ cat link.back1
&z3s?:cFu#cS0shell51Testing软件测试网5P] s-[b)^#e
shell51Testing软件测试网'BY,zbomP:K
[guo@guo ~]$ cat link
/e vEE8}X7@4lA^;Sc7~0shell51Testing软件测试网 p3Tp0y~;C*C[zF}%_W
shell

p%],T/A0h,v&G1q0  当删除原文件的时候硬链接文件仍然存在,且内容不变。

/L7D;@L6v:C0
[guo@guo ~]$ cat link
|QO~/`7}G/sl0shell51Testing软件测试网#VT^OLQ'{
shell51Testing软件测试网"k/Q\bV.pY
[guo@guo ~]$ cat link.back
r3[9gr,P.c6a4TB0shell51Testing软件测试网TpuRIJU
shell51Testing软件测试网*s5k1M7M%T&^
[guo@guo ~]$ rm link51Testing软件测试网nJ1F3U A3sm
rm:是否删除普通文件 "link"?y51Testing软件测试网W-k5xTqA
[guo@guo ~]$ cat link.back151Testing软件测试网 cl+HW9`M Nd
shell
nV C"C+Fp0shell
(s['C v6x+[0[guo@guo ~]$ cat link.back51Testing软件测试网{+uiQA0x:T
shell51Testing软件测试网;N!In#LzaAP
shell
51Testing软件测试网o m)}BQ
普通用户可以给超级用户的文件进行创建硬链接。
51Testing软件测试网$bYwYRUG P/o:s

51Testing软件测试网M0@ N K,V

[guo@guo ~]$ ls -al |grep 'file2'
f4HD*@Q$?Sv0-rw-r--r--   2 root root         89  4月  6 21:51 file2
M6ii,} J1g2S!K6T0[guo@guo ~]$ cp -l file2 file2.back51Testing软件测试网VTX^ zV8x
[guo@guo ~]$ ln file2 file2.back151Testing软件测试网a^b%M%B U{a
[guo@guo ~]$ ls -al |grep 'file2*'
hY|%hM0-rw-r--r--   4 root root         89  4月  6 21:51 file251Testing软件测试网#T%w.sD dE5P zVe5A
-rw-r--r--   4 root root         89  4月  6 21:51 file2.back
*td`@.YpaC9W f h0-rw-r--r--   4 root root         89  4月  6 21:51 file2.back1

$l7E)FX xQ0  但是由于原文件为root用户而且对其它用户无写的权限,所以其他用户不能修改原文件和硬链接文件,但可以对链接文件进行删除。

%i+n7w Q/h)WP0~0

nwtoHu$m|0

ca,d&H'D&`;o zf0
[guo@guo ~]$ rm file2.back51Testing软件测试网EF5AO Y8u N0e3p |
rm:是否删除有写保护的普通文件 "file2.back"?y51Testing软件测试网Q Wf'M8{Dg{
[guo@guo ~]$ rm file2.back151Testing软件测试网"j6d*F)? J)~.D9b
rm:是否删除有写保护的普通文件 "file2.back1"?y
51Testing软件测试网Om4gPz`

  由上面可以看出链接的文件写有保护。51Testing软件测试网~&@*Y0cl aDf

2G&K.?#C*X#Zs6B0  创建符号链接及其性质:51Testing软件测试网qn#}"\%T u

51Testing软件测试网R`vPTKJq

  创建符号链接:

t6u!xP?T0

'X%Y:T5w!T R6o:_P6v_#H051Testing软件测试网Uzk+X&A)Z }5e

<span style="font-size:10px;">[guo@guo ~]$ cp -s link link.back
.NQK'F#i3Zy&rf*A0[guo@guo ~]$ ln -s link link.back151Testing软件测试网*k,n1T.X |6[
[guo@guo ~]$ ls -al |grep 'link*'
7s?P!M7gKA!Z0-rw-rw-r--   2 guo  guo          12  4月  8 20:37 link
p7T Q'JA)Qjt-lk0x0lrwxrwxrwx   1 guo  guo           4  4月  8 20:51 link.back -> link51Testing软件测试网HA@"\(^"U%\ \4[y
lrwxrwxrwx   1 guo  guo           4  4月  8 20:51 link.back1 -> link</span>

n"w?c~b:YEBw0  注意此时链接的文件属性为l,软文件大小与原文件大小也不一样。51Testing软件测试网%~(^ Q#c;E3K_ WmI x$A

51Testing软件测试网\ D P"?7N%i\ `

  与硬链接一样,当修改任意个文件内容均可是三个文件内容同时改变,此处不在举例。

P5j\v2M"x0

!o4Ac FrF1J0  对于软链接当删除原文件后链接文件不能再打开。

N[KZ#}r_8Im&zN7j0

r _-R7Rb*A;k*z-Wp:O0

D pD fF0
<span style="font-size:10px;">[guo@guo ~]$ cat link
3j0G8B P5_0shell51Testing软件测试网0A)V/O2w:i cCz
shell51Testing软件测试网L1]#Tlczn
[guo@guo ~]$ cat link.back
P*a?/\*i4f1H0shell
,h#W {6^6[~&l D0shell51Testing软件测试网4_-_h0Y2M,eo
[guo@guo ~]$ rm link51Testing软件测试网tPG x0S7D?)R6K/j%lm
rm:是否删除普通文件 "link"?y51Testing软件测试网 [ R#Q4z#ey&rp
[guo@guo ~]$ ls -al |grep 'link.back*'
q-tR w^0lrwxrwxrwx   1 guo  guo           4  4月  8 21:02 link.back -> link
bs H&w U hM|M0lrwxrwxrwx   1 guo  guo           4  4月  8 21:02 link.back1 -> link
MVl] x-q1l/M0[guo@guo ~]$ cat link.back51Testing软件测试网4GS$Zh]D@
cat: link.back: 没有那个文件或目录
b.s ^c4P^^0[guo@guo ~]$ cat link.back151Testing软件测试网i{LK|K#dV
cat: link.back1: 没有那个文件或目录</span>

2g;g#bN}$lQ ^cq0  普通用户可以给超级用户的文件进行创建软链接,与硬链接类似,此处不再举例。51Testing软件测试网*M%h5?sE(vf,Sl

51Testing软件测试网b8~0{S-\K

  软链接可以创建目录链接,可以跨文件系统进行链接。

8w2`7x X6C(`c[051Testing软件测试网,n w~xZ-y$G+WO

TAG:

 

评分:0

我来说两句

Open Toolbar