Linux下的硬链接和符号链接

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

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

a7V3JSv v5U+T3l0  Linux文件系统最重要的特点之一是它的文件链接。链接是对文件的引用,这样您可以让文件在文件系统中多处被看到。保存在磁盘分区中的文件不管是什么类型都给它分 配一个编号,称为索引节点号inode 。在 Linux 中,链接可以如同原始文件一样来对。链接可以与普通的文件一样被执行、编辑和访问。对系统中的其他应用程序而言,链接就是它所对应的原始文件。当您通过链 接对文件进行编辑时,您编辑的实际上是原始文件。链接不是副本。有两种类型的链接:硬链接和符号链接(软链接)。51Testing软件测试网/` b\:rI

51Testing软件测试网+}Zb*@"])~S!M4\ p

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

51Testing软件测试网T^wDv8[?i*IB{%kg

  软连接,其实就是新建立一个文件,这个文件就是专门用来指向别的文件的(那就和windows 下的快捷方式的那个文件有很接近的意味)。软连接产生的是一个新的文件,但这个文件的作用就是专门指向某个文件的,删了这个软连接文件,那就等于不需要这 个连接,和原来的存在的实体原文件没有任何关系,但删除原来的文件,则相应的软连接不可用(cat那个软链接文件,则提示“没有该文件或目录“)。

]$M^@'C&F2E051Testing软件测试网 C b/yHA s

  硬链接与软链接的区别:51Testing软件测试网lg5R5S.`W)m

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

51Testing软件测试网 @a/vw2x G

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

SMC8to7g*C1] xO051Testing软件测试网'c^ g-U{{9z-b1k

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

51Testing软件测试网%Sw0b'H+nz

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

yULD5g,Bo7H9c8fF0

6^?5}?Fq0  首先用cp和ln命令都可以创建硬链接和符号链接。51Testing软件测试网kl__?SS

51Testing软件测试网}tKI2bQyf,i

  创建硬链接及其性质:

%zHXmu'iS-E0
[guo@guo ~]$ cp -l link link.back51Testing软件测试网)fBU SB\,@
[guo@guo ~]$ln link link.back1
%x$|Qa X,zBK:H0[guo@guo ~]$ ls -al |grep 'link*'
2P8U|lG{[(m(N0-rw-rw-r--   3 guo  guo          38  4月  8 20:24 link51Testing软件测试网 z;pc|y
-rw-rw-r--   3 guo  guo          38  4月  8 20:24 link.back
#Y7U m4jy/B0-rw-rw-r--   1 guo  guo          38  4月  8 20:26 link.back1
51Testing软件测试网SIry8aAJU

  创建的硬链接文件与原文件的文件大小相同,文件属性为普通文件。51Testing软件测试网 P$i2\?u p&~ |)M

m4IW:@ZZp*p%D0  当修改任意个文件内容均可是三个文件内容同时改变。51Testing软件测试网xgm9l'sx

[guo@guo ~]$ cat link51Testing软件测试网k#r!b*K,H.En
shell
E/[6o"Y%EM0[guo@guo ~]$ cat link.back*51Testing软件测试网E#Ff,}g3J}3`
shell51Testing软件测试网ndF5Nv
shell
\q&gyZ1H7y8C0[guo@guo ~]$ cat link
.a1ux6R[{ f9g0shell51Testing软件测试网'Yp;s-|.A5Cc_*`E t
[guo@guo ~]$ cat link.back51Testing软件测试网 G?qB5U[q
shell
NBPY.J\0[guo@guo ~]$ cat link.back151Testing软件测试网P#w0N.q%?9xX
shell
|l@%l$d'k O/w0[guo@guo ~]$ echo "shell" >>link.back51Testing软件测试网3R'c4U;U+qyC s
[guo@guo ~]$ cat link.back51Testing软件测试网6V(}:ea eEkK2aN
shell
^"H^^q(w d/Nz;h0shell
b4k*Y;VX"Ui0[guo@guo ~]$ cat link.back1
ao@-S F!HJKo-b5sz0shell
X;t,Ohz2^'\b0shell
uT},| B;Gy"^&io0[guo@guo ~]$ cat link
:QvX_,C'}4r)r0shell51Testing软件测试网p!i [],Q_UN
shell
51Testing软件测试网L0wv n;{1?1|"X

  当删除原文件的时候硬链接文件仍然存在,且内容不变。

H-E"W i*Xpo.j2?0
[guo@guo ~]$ cat link
B H @(wQ]&c+[l0shell51Testing软件测试网3~1}l EmIP
shell
7?%w2D!fuySg4PF0[guo@guo ~]$ cat link.back51Testing软件测试网ZQ W?:B_
shell
BR$k&t`0shell51Testing软件测试网R0p Oc`
[guo@guo ~]$ rm link51Testing软件测试网$Q9H3c!H;s.o(UZ+T
rm:是否删除普通文件 "link"?y51Testing软件测试网F%@;b+q:X
[guo@guo ~]$ cat link.back1
4T/Vu\ I H(j?}0shell51Testing软件测试网8j q C,s:mri"l
shell
'W;EPAb.x.c }$e0[guo@guo ~]$ cat link.back51Testing软件测试网 CBF`T5i:rb
shell51Testing软件测试网e'|/ZD_
shell
51Testing软件测试网h;d4r2kS_Y-S7B V
普通用户可以给超级用户的文件进行创建硬链接。

e%|1s/U8l2R!S~051Testing软件测试网0] ]$E9b$TY

[guo@guo ~]$ ls -al |grep 'file2'
C P _ |'qLS4b0-rw-r--r--   2 root root         89  4月  6 21:51 file2
iICJ3R@+rN~4q0[guo@guo ~]$ cp -l file2 file2.back
ol S_A$KI0[guo@guo ~]$ ln file2 file2.back1
W8jVq-W tPV0[guo@guo ~]$ ls -al |grep 'file2*'
8ZLw.L/J)^1KH:P0-rw-r--r--   4 root root         89  4月  6 21:51 file251Testing软件测试网&VA} WE/C!S
-rw-r--r--   4 root root         89  4月  6 21:51 file2.back51Testing软件测试网 Q!h`sU~%CC
-rw-r--r--   4 root root         89  4月  6 21:51 file2.back1

r1n9^\e;Kl;_0  但是由于原文件为root用户而且对其它用户无写的权限,所以其他用户不能修改原文件和硬链接文件,但可以对链接文件进行删除。51Testing软件测试网?f,|q7G(C*P8q

]6p,X#Zx051Testing软件测试网/kQHp xDF+A,D

[guo@guo ~]$ rm file2.back
Q:S-z OMhg^0rm:是否删除有写保护的普通文件 "file2.back"?y51Testing软件测试网CRbN`Oi
[guo@guo ~]$ rm file2.back151Testing软件测试网gFLI?!{4H
rm:是否删除有写保护的普通文件 "file2.back1"?y
51Testing软件测试网#xw&}$z]w

  由上面可以看出链接的文件写有保护。

T4l/V}"` s051Testing软件测试网Q)A-y.|KL Zt'a.K

  创建符号链接及其性质:51Testing软件测试网!Gsv]!w5`

51Testing软件测试网`T?Jh\ vj`X}

  创建符号链接:

0L jM.E7oLW!y1JbO)E051Testing软件测试网9l8?7lXz\3M

|#h"?$nRU)u0
<span style="font-size:10px;">[guo@guo ~]$ cp -s link link.back
*d_VQyDx0C9k0[guo@guo ~]$ ln -s link link.back1
1t(X!{D*|0[guo@guo ~]$ ls -al |grep 'link*'
X#vr5}r*fb H0-rw-rw-r--   2 guo  guo          12  4月  8 20:37 link
%xp#`+D'?0lrwxrwxrwx   1 guo  guo           4  4月  8 20:51 link.back -> link51Testing软件测试网1mt$x-h4Rr3j6e
lrwxrwxrwx   1 guo  guo           4  4月  8 20:51 link.back1 -> link</span>
51Testing软件测试网$\ qi3s6KA5{H)I.^

  注意此时链接的文件属性为l,软文件大小与原文件大小也不一样。

E M}CI?7tM0

]#uP/c;M(yQ$Z0  与硬链接一样,当修改任意个文件内容均可是三个文件内容同时改变,此处不在举例。51Testing软件测试网 f^a6Yc3Y

B;~)x9Mm)CL0  对于软链接当删除原文件后链接文件不能再打开。51Testing软件测试网Fw X(e3Mc

51Testing软件测试网q+W Pc'CTVZ'\

9by\ yX"EZ)h0
<span style="font-size:10px;">[guo@guo ~]$ cat link
.L,C8q)S+td!b0w0shell51Testing软件测试网%^3m&A1`"v z
shell
[fPO*cf:h @:I_ t0[guo@guo ~]$ cat link.back51Testing软件测试网*OD Hcn\+I
shell51Testing软件测试网&?;I(YOb6b3k
shell51Testing软件测试网F Y)s!D&A
[guo@guo ~]$ rm link51Testing软件测试网6nD _'J(Q\
rm:是否删除普通文件 "link"?y
Q#dW`3\EL0[guo@guo ~]$ ls -al |grep 'link.back*'51Testing软件测试网"e Kz4xEGb N9A
lrwxrwxrwx   1 guo  guo           4  4月  8 21:02 link.back -> link51Testing软件测试网Wx Z7d9gjA3I#aT
lrwxrwxrwx   1 guo  guo           4  4月  8 21:02 link.back1 -> link
#v:KxT/T9Z6W&k0[guo@guo ~]$ cat link.back
B;A([R]&M3~0cat: link.back: 没有那个文件或目录
meg${/xz0[guo@guo ~]$ cat link.back151Testing软件测试网p~3u-f)H2R
cat: link.back1: 没有那个文件或目录</span>
51Testing软件测试网YRgC `+eG4h9t

  普通用户可以给超级用户的文件进行创建软链接,与硬链接类似,此处不再举例。51Testing软件测试网"g-K6\Vb&n_P+Ks

51Testing软件测试网4AJ:p3E0E

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

@;Pe,D*hL5V0
)J'{-|"T:j*h0

TAG:

 

评分:0

我来说两句

Open Toolbar