软链接和硬链接

在linux系统中,内核为每一个新创建的文件分配一个inode号(索引节点),文件属性保存在索引节点里,在访问文件时,索引节点被复制到内存里,从而实现文件的快速访问。

链接是一种在共享文件和访问它的用户的若干目录项之间建立联系的方法。Linux系统中包括两种链接:硬链接和软链接(也叫做符号链接)

1.硬链接

  • 是一个指针,指向文件索引节点,系统并不为他重新分配inode,可以用ln -li命令来建立硬链接。节省空间,也是linux系统整合文件系统的传统方式
  • 硬链接有2个限制:不允许给目录创建硬链接,只有在同一文件系统中的文件才能创建链接
  • 对硬链接文件进行读写和删除操作的时候,结果和软链接相同。但是如果删除硬链接文件的源文件,硬链接仍然存在,而且保留了原有的内容,系统把他当成一个普通文件。修改其中一个,与其链接的文件同时修改

2.软链接

又叫做符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或者目录,可以链接不同文件系统的文件,和windows下的快捷方式相似。链接文件甚至可以链接不存在的文件,这就产生一般称之为断链的问题,链接文件甚至可以循环链接自己

3.硬链接和软链接的区别

硬链接纪录的是目标的inode,由于inode的缘故,只能在本分区中做链接

软链接纪录的是目标的路径,可以跨分区链接,所以是用得多

4.链接文件的使用

ln [-i] [-s] 源文件 链接名

-i 确认是否删除目的地文件

-s 创建软链接(符号链接)

       硬链接:

  • ln a b 创建文件a得硬链接文件b
  • ln -l 可以看到两个文件的大小和其他属性都相同 如--rw-r--r-- 2 root root ....,链接数都是2
  • 硬链接文件b的内容和a相同
  • 修改源文件,可以看到硬链接文件也跟着改变了文件内容
  • 删除源文件,硬链接文件还是存在的,其文件属性的文件链接数现在为1

软链接

  • ln -s a b 创建文件a的软链接b
  • ls -l看到  b-->a   软链接的大小很小,因为它只是一个指向a文件的快捷方式,链接数还都是1
  • 查看文件b的内容,它将指向文件a,从而看到内容和文件a相同
  • 修改源文件,可以看到软链接文件的内容也跟着改变
  • 删除源文件,软链接还是存在,但是打开软链接文件时,由于所指向的源文件已被删除,所以不能打开
原文地址:https://www.cnblogs.com/SophiaTang/p/2185554.html