linux 软连接/硬连接

硬链接和软连接的区别:

要说明这个问题,先说明下liunx下文件和目录的本质

liunx上,目录也是文件的一种,它是储存了一张表的文件。例如有一个叫程序的文件夹,里面有两个文件12.在那张目录表内。它的内容是这样的

名称 节点

1    338

2    228

那么什么是节点呢?c语言我们都学过,我们简单地把节点号理解成一个数组的下标,把内存看成一个大数组,每个文件都可以看成一个数组中的一个元素,而知道了节点号,就可以找到了实质的文件内容。

 

有了以上的认识,就可以进一步地解释硬链接:

硬链接的书写格式是:ln 目标文件名 链接名

那么它的过程是怎么样的呢?

例如我们输入:ln 3 2

那么,在同个目录表下增加一项

名称 节点

1 338

2 228

3 228

这时候,文件3也指向了跟2一样的内存块,也就是说跟2的内容是完全一样的。

而软连接又是怎么回事呢?

这里得说明,软连接和硬链接也是特殊的文件,在liunx中的所有都是以文件表示的,软连接可以看成一个文本文件,它的内容是保存目标文件名的路径地址。

软连接的格式是ln -s 目标文件名 链接名

例如输入 ln -s 4 2

它的执行过程是这样的,先把2文件的路径名复制到4,执行4时,先从中读到2的路径名,找到2这个文件,然后执行2.所以对4文件的操作都是对2文件的操作。

 

Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode。文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存在,从而实现文件的快速访问。用命令ls -i 可查看节点号

硬链接:(hard link)

只针对于文件,通过索引节点来进行链接,系统中的所有文件都不会有相同的indoe。如果有相同的indoe那么这个文件链接着另一个文件,内容是相同的并同步,称为硬链接。可以使用ls –l命令显示出它的硬链接数。删掉源文件,硬链接文件正常使用。

 

软连接:(symbolic link)也称为符号链接

文件和目录都可以,软连接类似于windows下的快捷方式,删掉源文件后,软连接将不能正常使用。注意软连接是文件夹,当进入这个软连接下的目录时,执行一些命令比如cp,目录是按源文件目录计算的,而当前所在目录还是在这个物理目录。

 

创建硬链接:#ln 源文件 目标文件

创建软连接:#ln –s 源文件 目标文件

 

1.硬链接

#mkdir /test

#cd /test

#touch aaa.txt

#echo “I am system administrator” >> aaa.txt

#ln aaa.txt /test/aaa.txt_hard_link

#ls -il

1144062 -rw-r--r-- 2 root root 26 Feb 20 20:17 aaa.txt

1144062 -rw-r--r-- 2 root root 26 Feb 20 20:17 aaa.txt_hard_link

可以看到两个文件的索引节点完全相同,而且硬链接数为2,文件本身也是1个硬链接数,每增加一个硬链接就加1,而且里面的内容完全相同

#mkdir bbb

#ln bbb /test/bbb.txt_hard_link

ln: `bbb': hard link not allowed for directory

硬链接是不能对目录操作

 

如果删掉aaa.txt源文件,它的硬链接文件aaa.txt_hard_link可以正常工作

2.软链接

#ln –s aaa.txt /test/aaa.txt_soft_link

#ls –il

1144062 -rw-r--r-- 2 root root 26 Feb 20 20:17 aaa.txt

1144062 -rw-r--r-- 2 root root 26 Feb 20 20:17 aaa.txt_hard_link

1144065 lrwxrwxrwx 1 root root 7 Feb 20 20:55 aaa.txt_soft_link -> aaa.txt

文件类型是l链接文件,可以对文件或目录使用软连接,删掉源文件aaa.txt.它的软连接文件aaa.txt_soft_link不能正常使用

文件链接数:创建出的新文件它的硬链接数是1,文件本身是一个硬链接。

目录链接数:目录硬链接是2因为目录本身也是一个硬链接,目录里的.(当前目录)也是一个硬链接

删除链接

rm -rf symbolic_name 注意不是rm -rf symbolic_name/


备注:I节点 :它是UNIX内部用于描述文件特性的数据结构。我们通常称I节点为文件索引结点(信息结点)i节点 含有关于文件的大部分的重要信息,包括文件数据块在磁盘上的地址。每一个I节点有它自己的标志号,我们称为文件顺序号。I节点包含的信息 1.文件类型 2.文件属主关系 3.文件的访问权限 4.文件的时间截。

 

你可能感兴趣的:(linux 软连接/硬连接)