Linux上ln命令详细说明及软链接和硬链接的区别

转载 2013年12月04日 17:33:58

硬链接(hard link)
UNIX文件系统提供了一种将不同文件链接至同一个文件的机制,我们称这种机制为链接。它可以使得单个程序对同一文件使用不同的名字。这样的好处是文件系 统只存在一个文件的副本,系统简单地通过在目录中建立一个新的登记项来实现这种连接。该登记项具有一个新的文件名和要连接文件的inode号,文件的目录登记项就是所谓的文件硬链接(硬链接,目录登记项: 文件名-->文件的inode;文件名可以有多个,但文件inode只是一个)。不论一个文件有多少硬链接,在磁盘上只有一个描述它的inode,只要该文件的链接数不为0,该文件就保持存在。硬链接不能跨越文件系统,也不能对目录建立硬链接!
硬 连接是直接建立在节点表上的(inode),建立硬连接指向一个文件的时候,会更新节点表上面的计数值。举个例子,一个文件被连接了两次(硬连接),这 个文件的计数值 是3,而无论通过3个文件名中的任何一个访问,效果都是完全一样的,但是如果删除其中任意一个,都只是把计数值减1,不会删除实际的内容的,(任何存在的 文件本身就算是一个硬连接)只有计数值变 成0也就是没有任何硬连接指向的时候才会真实的删除内容。

软链接(symbolic link)
我们把符号链接称为软链接,它是指向另一个文件的特殊文件,这种文件的数据部分仅包含它所要链接文件的路径名。软链接是为了克服硬链接的不足而引入的,软链接不直接使用inode号作为文件指针,而是使用文件路径名作为指针(软链接:文件名 + 数据部分-->目标文件的路径名)。软件有自己的inode,并在磁盘上有一小片空间存放路径名。因此,软链接能够跨文件系统,也可以和目录链接!其二,软链接可以对一个不存在的文件名进行链接,但直到这个名字对应的文件被创建后,才能打开其 链接。

举个例子

系统文件系统使用情况,其中 /home 文件系统当前已使用了 3.0G ,剩余105G
[root@s14 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/sys-root 4.0G 2.3G 1.5G 60% /
/dev/cciss/c0d0p1 244M 11M 221M 5% /boot
none 1.9G 0 1.9G 0% /dev/shm
/dev/mapper/sys-home 112G 3.0G 105G 3% /home
/dev/mapper/sys-var 2.0G 174M 1.7G 10% /var

我们拿一个大文件来做测验,1.6G 大小。
[root@s14 ~]# ls -lh /home/zjw/Wins2003.tar.gz
-rw-r--r-- 1 zjw zjw 1.6G Jun 12 18:51 /home/zjw/Wins2003.tar.gz

建立软连接:
[root@s14 ~]# ln -s /home/zjw/Wins2003.tar.gz /home/zjw/Wins2003.tar.gz.symboliclink

建立硬连接:
[root@s14 ~]# ln -b /home/zjw/Wins2003.tar.gz /home/zjw/Wins2003.tar.gz.hardlink

查看这几个文件的情况,发现:
1)硬链接文件显示跟原来文件一样大小1.6G,软链接文件才27个字节;
2)硬链接文件inode号跟原来文件一样,都是 753682,软链接文件inode号为 753685;
[zjw@s14 ~]$ ls -lih /home/zjw/Wins2003.tar.gz*
753682 -rw-r--r-- 2 zjw zjw 1.6G Jun 12 18:51 /home/zjw/Wins2003.tar.gz
753682 -rw-r--r-- 2 zjw zjw 1.6G Jun 12 18:51 /home/zjw/Wins2003.tar.gz.hardlink
753685 lrwxrwxrwx 1 root root 27 Jun 16 18:10 /home/zjw/Wins2003.tar.gz.symboliclink -> /home/zjw/Wins2003.tar.gz

查看 /home 文件系统,发现空间使用没有明显变化,还是使用 3.0G,剩余 105G
[root@s14 ~]# df -h /home
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/sys-home 112G 3.0G 105G 3% /home

上述实验说明:
1)在同一文件系统下,可以创建软链接或硬链接(同文件系统不同目录下也可以);
2)硬链接的文件显示大小跟原文件一样;软链接的文件很小,只有几十个字节;
3)硬链接的文件的inode跟原文件一样;软连接的文件有自己的inode,跟原文件不一样;
4)创建软链接或硬链接文件不会明显占用文件系统磁盘空间;

我们测试一下跨文件系统(/home --> /var ),是否可以建立软链接和硬链接:
软链接成功:
[root@s14 var]# ln -s /home/zjw/Wins2003.tar.gz /var/wins2003.symboliclink
硬链接失败:
[root@s14 var]# ln -b /home/zjw/Wins2003.tar.gz /var/wins2003.hardlink
ln: creating hard link `/var/wins2003.hardlink' to `/home/zjw/Wins2003.tar.gz': Invalid cross-device link

上述实验说明:
1)软链接可以跨文件系统建立; 硬链接则不可以;

====================================================================

ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,具体用法是:ln –s 源文件 目标文件。
  当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。例如:ln –s /bin/less /usr/local/bin/less
  -s 是代号(symbolic)的意思。
  这里有两点要注意:第一,ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;第二,ln的链接又软链接和硬链接两种,软链接就是ln –s ** **,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接ln ** **,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。
  如果你用ls察看一个目录时,发现有的文件后面有一个@的符号,那就是一个用ln命令生成的文件,用ls –l命令去察看,就可以看到显示的link的路径了。
  指令详细说明
  指令名称 : ln
  使用权限 : 所有使用者
  使用方式 : ln [options] source dist,其中 option 的格式为 :
  [-bdfinsvF] [-S backup-suffix] [-V {numbered,existing,simple}]
  [--help] [--version] [--]
  说明 : Linux/Unix 档案系统中,有所谓的连结(link),我们可以将其视为档案的别名,而连结又可分为两种 : 硬连结(hard link)与软连结(symbolic link),硬连结的意思是一个档案可以有多个名称,而软连结的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬连结是存在同一个档案系统中,而软连结却可以跨越不同的档案系统。
  ln source dist 是产生一个连结(dist)到 source,至于使用硬连结或软链结则由参数决定。
  不论是硬连结或软链结都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。
  -f : 链结时先将与 dist 同档名的档案删除
  -d : 允许系统管理者硬链结自己的目录
  -i : 在删除与 dist 同档名的档案时先进行询问
  -n : 在进行软连结时,将 dist 视为一般的档案
  -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

Linux命令——ln命令创建和删除软、硬链接

[转载] linux下创建和删除软、硬链接在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号。文件属性保存在索引结点里,在访问文件时,索引结...

linux硬链接和软链接的详细说明

一:介绍 对于一个文件来说,有唯一的索引结点(inode)与之对应,而对于一个索引结点号,却可以有多个文件名与之对应。因此,在磁盘上的同一个文件可以通过不同的路径去访问该文件。注意在Linu...

ln 命令 软链接与硬链接区别

命令:ln 使用方法   指令名称 : ln   使用权限 : 所有使用者   使用方式 : ln [options] source dist,其中 option 的格式为 :  ...
  • wjs87
  • wjs87
  • 2011年11月08日 13:42
  • 555

Linux命令ln、cp、硬链接和软链接

1.Linux链接概念 Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。 【硬连接】 硬连接指通过索引节点来进行连接。在Linux的...

linux中ln命令--硬链接和软链接

一、ln命令参数 ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,具体用法是:ln –s 源文件 目标文件。   当我们需要...
  • xh16319
  • xh16319
  • 2012年12月07日 17:59
  • 971

ln 命令 不允许将硬链接指向目录

技术第一语:链接是操作系统的一种目录结构,今天初学LN命令,获得一个提示,“不允许将硬链接指向目录”,主要原因我认为是考虑目录遍历时的死循环问题,相关资料as following 链接———是一种在共...

ln 命令 硬链接

【来自:http://hi.baidu.com/vili/blog/item/e315fa035c0585723812bb77.html】ln命令   该命令在文件之间创建链接。这种操作实际上是给系统...
  • jo_say
  • jo_say
  • 2011年04月18日 09:10
  • 627

CENTOS 的 ln 命令——软链接和硬链接

ln  这是linux中一个非常重要命令,请大家一定要熟悉。它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,具体用法是:ln -s 源文件 目标文件。  当我们需要...

linux 链接ln的使用 创建和删除符号连接(软、硬链接)

1 . 使用方式 :ln [option] source_file dist_file   (source_file是待建立链接文件的文件,dist_file是新创建的链接文件)        ...
  • zljjava
  • zljjava
  • 2012年12月10日 19:04
  • 1488

linux 链接ln的使用 创建和删除符号连接(软、硬链接)

1 . 使用方式 :ln [option] source_file dist_file   (source_file是待建立链接文件的文件,dist_file是新创建的链接文件)        ...
  • myxmu
  • myxmu
  • 2014年08月25日 14:07
  • 425
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux上ln命令详细说明及软链接和硬链接的区别
举报原因:
原因补充:

(最多只允许输入30个字)