在Linux系统中,内核为每个新建立的文件分配一个Inode(索引结点),每一个文件都有一个唯一的inode号。文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存在,从而实现文件的快速访问。node
连接是一种在共享文件和访问它的用户的若干目录项之间创建联系的一种方法。Linux中包括两种连接:硬连接(Hard Link)和软连接(Soft Link),软连接又称为符号连接(Symbolic link)。符号链接至关于Windows下的快捷方式。linux
1、硬连接windows
硬连接说白了是一个指针,指向文件索引节点,系统并不为它从新分配inode。能够用:ln命令来创建硬连接。
语法:
ln [options] existingfile newfile(sexistingfile 待创建连接文件的文件,newfile是新建立的连接文件)
ln [options] existingfile-list directory网络
-f 创建时,将同档案名删除.
-i 删除前进行询问.数据结构
ln -s abc cde 创建abc 的软链接
ln abc cde 创建abc的硬链接,post
用法:
第一种:为”existingfile”建立硬连接,文件名为”newfile”。
第二种:在”directory”目录中,为”existingfile-list”中包含的全部文件建立一个同名的硬连接。
经常使用可选[options] –f 不管”newfile”存在与否,都建立连接。-n 若是”newfile”已存在,就不建立连接。学习
下面举一些例子:spa
[root@rekfan.com test]# ls -il
总计 0
1491138 -rw-r–r– 1 root root 48 07-14 14:17 file1
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2
[root@rekfan.com test]# ln file2 file2hand
[root@rekfan.com test]# ls -il
总计 0
1491138 -rw-r–r– 1 root root 48 07-14 14:17 file1
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand
[root@rekfan.com test]#指针
注意在建立连接前,file1 显示的连接数目为1,建立连接后file1和file1hard的连接数目都变为2;file1和file1hard在inode号是同样的file1和file1hard显示的文件大小也是同样。可见进行了ln命令的操做结果:file1和file1hard是同一个文件的两个名字,它们具备一样的索引节点号和文件属性,创建文件file1的硬连接,就是为file1的文件索引节点在当前目录上创建一个新指针。你能够删除其中任何一个,如rm file2 ,每次只会删除一个指针,连接数同时减一,当连接数减为0时,内核才会把文件内容从磁盘上删除。
还能够在不一样目录,但同一文件系统中创建文件的硬连接。设file一、file2在目录/home/root/dir1中,下面的命令,在/home/root中创建file2的硬连接。
ln file2 /home/root/file2hard
下面的程序,是将dir1目录中全部文件,在目录dir2中创建硬连接
#mkdir dir2
#ln /home/root/dir1/* /home/root/dir2
若是使用了 ln –f existingfile newfile,若是newfile已经存在,则不管原来newfile是什么文件,只用当前用户对它有写权限,newfile就成为exisitngfile的硬连接文件。
尽管硬连接节省空间,也是Linux系统整合文件系统的传统方式,可是存在一下不足之处:
(1)不能够在不一样文件系统的文件间创建连接
(2)只有超级用户才能够为目录建立硬连接。
2、软连接(符号连接)
软连接克服了硬连接的不足,没有任何文件系统的限制,任何用户能够建立指向目录的符号连接。于是如今更为普遍使用,它具备更大的灵活性,甚至能够跨越不一样机器、不一样网络对文件进行连接。
创建软连接,只要在ln后面加上选项 –s,下面举个例子
[root@rekfan.com test]# ls -il
总计 0
1491138 -rw-r–r– 1 root root 48 07-14 14:17 file1
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand
[root@rekfan.com test]# ln -s file1 file1soft
[root@rekfan.com test]# ls -il
总计 0
1491138 -rw-r–r– 1 root root 48 07-14 14:17 file1
1491140 lrwxrwxrwx 1 root root 5 07-14 14:24 file1soft -> file1
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand
从上面连接后的结果能够看出来软连接与硬连接,区别不只仅是在概念上,在实现上也是不一样的。区别:硬连接原文件&连接文件公用一个inode号,说明他们是同一个文件,而软连接原文件&连接文件拥有不一样的inode号,代表他们是两个不一样的文件;在文件属性上软连接明确写出了是连接文件,而硬连接没有写出来,由于在本质上硬连接文件和原文件是彻底平等关系;连接数目是不同的,软连接的连接数目不会增长;文件大小是不同的,硬连接文件显示的大小是跟原文件是同样的,这用强调,由于是等同的嘛,而这里软连接显示的大小与原文件就不一样了,file1大小是48B,而file1soft是5B,这里面的5实际上就是“file1”的大小。
总之,创建软连接就是创建了一个新文件。当访问连接文件时,系统就会发现他是个连接文件,它读取连接文件找到真正要访问的文件。
在不一样系统之间创建软连接、对目录创建连接,这里就不举例了,读者能够本身去尝试,我也是在不断实践中学习的。
固然软连接也有硬连接没有的缺点,由于连接文件包含有原文件的路径信息,因此当原文件从一个目录下移到其余目录中,再访问连接文件,系统就找不到了~~,而硬连接就没有这个缺陷,你想怎么移就怎么移(呵呵);还有它要系统分配额外的空间用于创建新的索引节点和保存原文件的路径。
补充一下:能够经过symlink来查看连接文件,能够用 man symlink来学习。
3、删除连接
有建立就有删除
[root@rekfan.com test]# ls -il
总计 0
1491138 -rw-r–r– 1 root root 0 07-14 14:17 file1
1491140 lrwxrwxrwx 1 root root 5 07-14 14:24 file1soft -> file1
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand
[root@rekfan.com test]# rm -rf file1soft
[root@rekfan.com test]# ls -il
总计 0
1491138 -rw-r–r– 1 root root 0 07-14 14:17 file1
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand
[root@rekfan.com test]#
————————————
linux 软链接和硬连接的区别:
————————————
4点不一样 :
(1)软链接能够 跨文件系统 ,硬链接不能够 。
实践的方法就是用共享文件把windows下的 aa.txt文本文档链接到linux下/root目录 下 bb,cc . ln -s aa.txt
/root/bb 链接成功 。ln aa.txt /root/bb 失败 。
(2)关于 I节点的问题 。硬链接无论有多少个,都指向的是同一个I节点,会把 结点链接数增长 ,只要结点的链接数不是 0,文件就一直存在 ,无论你删除的是
源文件仍是 链接的文件 。只要有一个存在 ,文件就 存在 (其实也不分什么 源文件链接文件的 ,由于他们指向都是同一个 I节点)。 当你修改源文件或者链接文件
任何一个的时候 ,其余的 文件都会作同步的修改 。软连接不直接使用i节点号做为文件指针,而是使用文件路径名做为指针。因此 删除链接文件 对源文件无影响,但
是 删除 源文件,链接文件就会找不到要指向的文件 。软连接有本身的inode,并在磁盘上有一小片空间存放路径名.
(3)软链接能够对一个不存在的文件名进行链接 。
(4)软链接能够对目录进行链接。
备注:I节点 :它是UNIX内部用于描述文件特性的数据结构.咱们一般称I节点为文件索引结点(信息结点).i节点 含有关于文件的大部分的重要信 息,包括文件数据块在
磁盘上的地址.每个I节点有它本身的标志号,咱们称为文件顺序号.I节点包含的信息 1.文件类型 2.文件属主关系 3.文件的访问权限 4.文件的时间截.