转:linux⽂件链接(软链接和硬链接)
链接:⼀种在共享⽂件和访问它的⽤户的若⼲⽬录项之间建⽴联系的⼀种⽅法。
Linux中包括两种链接:硬链接(Hard Link)和软链接(Soft Link),软链接⼜称为符号链接(Symbolic link)。
我们⾸先来了解⼀下⼏个名词:
索引节点(inode)
要了解链接,我们⾸先得了解⼀个概念,叫索引节点(inode)。在Linux系统中,内核为每⼀个新创建的⽂件分配⼀个Inode(索引结点),每个⽂件都有⼀个惟⼀的inode号,我们可以将inode简单理解成⼀个指针,它永远指向本⽂件的具体存储位置。⽂件属性保存在索引结点⾥,在访问⽂件时,索引结点被复制到内存在,从⽽实现⽂件的快速访问。系统是通过索引节点(⽽不是⽂件名)来定位每⼀个⽂件。
硬链接(Hard Link)
硬链接说⽩了是⼀个指针,指向⽂件索引节点,系统并不为它重新分配inode。可以⽤:ln命令来建⽴硬链接。
引⽤
ln [options] existingfile newfile
ln [options] existingfile-list directory
⽤法:
第⼀种为”existingfile”创建硬链接,⽂件名为”newfile”。
第⼆种在”directory”⽬录中,为” existingfile-list”中包含的所有⽂件创建⼀个同名的硬链接。
常⽤可选[options]:-f ⽆论”newfile”存在与否,都创建链接。-n 如果”newfile”已存在,就不创建链接。
软链接(Soft Link)
软链接⼜叫符号链接,这个⽂件包含了另⼀个⽂件的路径名。可以是任意⽂件或⽬录,可以链接不同⽂件系统的⽂件。和win下的快捷⽅式差不多。
可以⽤:ln -s 命令来建⽴软链接。
引⽤
ln -s existingfile newfile
ln -s existingfile-list directory
下⾯我们⽤⼀个实例来说明硬链接和软链接。
现在⽬录下有两个⽂件,⼀个名为file1,⼀个名为file2。
引⽤
$ ls –il
1052671 -rw-r--r-- 1 Leanx Leanx 0 2010-03-29 13:46 file1
1052670 -rw-r--r-- 1 Leanx Leanx 0 2007-03-29 13:46 file2
⾸先先做⼀个file1的硬链接。
引⽤
$ ln file1 file1hard
$ls –il
1052671 -rw-r--r-- 2 Leanx Leanx 0 2010-03-29 13:46 file1
1052670 -rw-r--r-- 1 Leanx Leanx 0 2010-03-29 13:46 file12
1052671 -rw-r--r-- 2 Leanx Leanx 0 2010-03-29 13:46 file1hard
这⾥我们注意在创建链接前,file1显⽰的链接数⽬为1,创建链接后
1.file1和file1hard的链接数⽬都变为2。
2.file1和file1的inode号是⼀样的,都是1052671。
3.file1和file1hard显⽰的⽂件⼤⼩也是⼀样,都是0B。
可见进⾏了ln命令的操作结果:file1和file1hard是同⼀个⽂件的两个名字,它们具有同样的索引节点号和⽂件属性,建⽴⽂件file1的硬链接,就是为 file1的⽂件
索引节点在当前⽬录上建⽴⼀个新指针。你可以删除其中任何⼀个,如rm file1,每次只会删除⼀个指针,链接数同时减⼀,只有将所有指向⽂件内容的指针,也即链接数减为0时,内核才会把⽂件内容从
磁盘上删除。
尽管硬链接节省空间,也是Linux系统整合⽂件系统的传统⽅式,但是存在⼀些不⾜之处:
1.不允许给⽬录创建硬链接。
2.不可以在不同⽂件系统的⽂件间建⽴链接。
接着我们做⼀个指向file2的软链接,软链接克服了硬链接的不⾜,没有任何⽂件系统的限制,任何⽤户可以创建指向⽬录的符号链接。因⽽现在更为⼴泛使⽤,它具有更⼤的灵活性,甚⾄可以跨越不同机器、不同⽹络对⽂件进⾏链接。
引⽤
$ ln -s file2 file2soft
linux怎么读取文件内容
$ ls –il
总⽤量 0
1052671 -rw-r--r-- 2 Leanx Leanx 0 2010-03-29 13:34 file1
1052670 -rw-r--r-- 1 Leanx Leanx 0 2010-03-29 13:35 file2
1053313 lrwxrwxrwx 1 Leanx Leanx 5 2010-03-29 13:45 file2soft -> file2
1052671 -rw-r--r-- 2 Leanx Leanx 0 2010-03-29 13:34 file1hard
从上⾯链接后的结果可以看出来软链接与硬链接,区别不仅仅是在概念上,在实现上也是完全不同的。
区别:
1.硬链接原⽂件/链接⽂件公⽤⼀个inode号,说明他们是同⼀个⽂件,⽽软链接原⽂件/链接⽂件拥有不同的inode号,表明他们是两个不同的⽂件;
2.在⽂件属性上软链接明确写出了是链接⽂件,⽽硬链接没有写出来,因为在本质上硬链接⽂件和原⽂件是完全平等关系;
3.链接数⽬是不⼀样的,软链接的链接数⽬不会增加;
4.⽂件⼤⼩是不⼀样的,硬链接⽂件显⽰的⼤⼩是跟原⽂件是⼀样的。⽽这⾥软链接显⽰的⼤⼩与原⽂件就不同了,file2⼤⼩是0B,⽽file2soft是5B。
总之,建⽴软链接就是建⽴了⼀个新⽂件。当访问链接⽂件时,系统就会发现他是个链接⽂件,它读取链接⽂件到真正要访问的⽂件。
当然软链接也有硬链接没有的缺点,因为链接⽂件包含有原⽂件的路径信息,所以当原⽂件从⼀个⽬录下移到其他⽬录中,再访问链接⽂件,系统就不到了,⽽硬链接就没有这个缺陷,你想怎么移就怎么移;还有它要系统分配额外的空间⽤于建⽴新的索引节点和保存原⽂件的路径。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。