Tuesday 5 June 2007

软硬链接ln

命令:ln

说明 : Unix文件系 统中,所谓的连接(link),也就是文件的别名。连接分为两种:硬连接(hard link)与软连接(symbolic link),硬连接的意思是 一个文件可以有多个名称,而软连接的方式则是产生一个特殊的文件,该文件的内容是指向另一个文件的位置。硬连接是存在同一个文件系统中,而软连接却可以跨 越不同的文件系统。

参数:

-f : 创建连接时先将同名文件删除

-d : 允许系统管理员硬连接自己的目录

-i : 在删除同名文件时先进行询问

-n : 在进行软连接时,将连接视为一般的文件

-s : 进行软连接(symbolic link)

-v : 在连接之前显示其文件名

-b : 将在连接时会被覆写或删除的文件进行备份

-S SUFFIX : 将备份的文件都加上 SUFFIX 的字尾

-V METHOD : 指定备份的方式

-help : 显示辅助说明

-version : 显示版本

例:

将文件 yy 产生一个软连接(symbolic link)zz

# ln -s yy zz

将文件yy 产生一个硬连接(hard link)zz:

# ln yy xx

Pasted from <http://www.xxlinux.com/linux/article/unix/rumen/2006-06-25/2114.html>

要讲清楚这两个的区别,首先要明白unix系统当中文件的存储。unix文件当中文件的存储可以分为三部分:

1、 文件名 file name;

2、 我们称之为inode, 里面存储了此文件的属性,包括文件大小、所有者、以及访问权限等等。

3、 数据块 DATA;

以一个例子讲:

目标文件名称 /opt/public.c 要建立的软连接的名称为a , 建立的硬连接的名称为b。

此时/opt/public.c 文件的存储为: 1、文件名称 public.c 2、inode 为1233

3、数据块为文件的数据块。

那此时软连接a的存储为: 1、 文件名称:a 2、inode为 1423(系统分配值) 3、数据块数据为:/opt/public.c

而硬连接b的存储为: 1、 文件名称:b 2、inode为1233 3、数据块为文件的数据块。

从上面我们知道软连接 有自己的inode 和数据块,他的数据块当中的内容为所要连接的文件的绝对或者相对路径。而硬连接和他所要连接的文件共有同一个inode 和数据块。

这两个连接不同之处主要体现在访问权限上,建立的软连接的访问权限是777,但是这不是他的实际访问权限,他的实际访问权限还是以它所连接的文件的访问权 限为准。而硬连接建立的时候的访问权限就是它所连接的访问权限,因为他们共用一个inode,而inode当中所存储的就是此文件的访问权限。

需要补充的是,软连接可以跨文件系统,而硬连接不能跨文件系统。

看一个文件或者目录的硬连接数量可用ls -al

drwxr-xr-x 10 jlivr other 512 Jun 9 16:23 .

drwxrwxr-x 13 root sys 512 Apr 11 15:17 ..

-rw------- 1 jlivr other 3442 Jun 9 16:21 .bash_history

-rw-r--r-- 1 jlivr other 1039 May 11 17:04 .profile

drwxr-xr-x 2 jlivr other 512 Apr 26 15:58 bin

drwxr-xr-x 3 jlivr other 1024 Apr 26 15:51 inc

drwxr-xr-x 2 jlivr other 512 Apr 26 15:51 lib

drwxr-xr-x 8 jlivr other 512 Jun 6 17:18 mex

drwxr-xr-x 2 jlivr other 1024 May 20 12:21 new_voice

drwxr-xr-x 2 jlivr other 512 May 23 01:06 obj

访问权限与文件所有者当中有个数字, 代表的就是此文件或者目录的硬连接数量。

Pasted from <http://my.opera.com/abf/blog/unix>

No comments:

My photo
London, United Kingdom
twitter.com/zhengxin

Facebook & Twitter