【Linux入门学习之】Linux连接文件:硬连接和软连接
2011-12-29 21:44
190 查看
Linux下面的连接文件有2种:一种是类似与Windows的快捷方式功能的文件,可以让我们快速连接到目标文件,称为符号连接(symbolic link);另一种则是通过文件系统的inode连接产生新文件名,而不是产生新文件,称为硬连接(hard link)。
一、hard link(硬连接或实际连接)
在linux文件系统中,每个文件都会占用一个inode,文件内容由inode的记录来指向(block)。想要读取该文件,必须要通过目录记录的文件名来指向正确的inode号码才能读取。也即:文件名只与目录有关,文件内容与inode有关。hard link就是有多个文件名对应到同一个inode号码,它只是在某个目录下面新建一条文件名连接到某inode号码的关联记录而已。
实际连接的文件读取示意图如下:
根据上图,我们可以通过1或2的目录inode指定的block找到两个不同的文件名,而不管使用哪个文件名都可以指到real那个inode去读取到最终的数据。这样做的最大的好处就是安全。如果用户将任何一个文件名删除,其实inode和block都还是存在的。此时可以通过另一个“文件名”来读取到正确的文件数据。此外,不论使用那个文件名来编辑都可以将结果写入到相同的inode和block中。
一般来说,使用hard link设置连接文件时,磁盘的空间与inode数目都不会改变。它只是在某个目录下的block多写入一个关联数据而已。特殊情况就是,将要添加这条数据到某个block时它刚好满了,这样会导致磁盘空间的变化。不过,一般hard link用掉的关联数据都很小,所以通常不会改变inode与磁盘空间的大小。
注意:hard link仅能在单一文件系统里进行。
而且:不可以连接到目录。因为连接到目录的时候,连接的数据需要连同被连接的目录下面的所有数据都建立连接。
二、symbolic link(符号连接,即快捷方式)
它也叫软连接,是创建一个独立的文件,而这个文件会让数据的读取指向它连接的那个文件的文件名。当源文件被删除之后,symbolic link会打开不了。
符号连接文件读取示意图如下:
由1号inode读取到连接文件的内容仅有文件名,根据文件名连接到正确的目录去取得目标文件的inode。最终读取到正确的数据。
symbolic link会占用inode和block。
需要注意的是,改动symbolic link文件时,其实改动的就是源文件。
软连接可以跨文件系统,也可以和目录连接。
实例:
分别创建文件linktest的硬连接link1和软连接link2.ln命令不加任何参数时,默认创建硬连接。
可以看出,硬连接文件和源文件的属性完全相同,包括inode号码。
下面删除源文件,发现硬连接仍然可以读取,而软连接不能读取。
一、hard link(硬连接或实际连接)
在linux文件系统中,每个文件都会占用一个inode,文件内容由inode的记录来指向(block)。想要读取该文件,必须要通过目录记录的文件名来指向正确的inode号码才能读取。也即:文件名只与目录有关,文件内容与inode有关。hard link就是有多个文件名对应到同一个inode号码,它只是在某个目录下面新建一条文件名连接到某inode号码的关联记录而已。
实际连接的文件读取示意图如下:
根据上图,我们可以通过1或2的目录inode指定的block找到两个不同的文件名,而不管使用哪个文件名都可以指到real那个inode去读取到最终的数据。这样做的最大的好处就是安全。如果用户将任何一个文件名删除,其实inode和block都还是存在的。此时可以通过另一个“文件名”来读取到正确的文件数据。此外,不论使用那个文件名来编辑都可以将结果写入到相同的inode和block中。
一般来说,使用hard link设置连接文件时,磁盘的空间与inode数目都不会改变。它只是在某个目录下的block多写入一个关联数据而已。特殊情况就是,将要添加这条数据到某个block时它刚好满了,这样会导致磁盘空间的变化。不过,一般hard link用掉的关联数据都很小,所以通常不会改变inode与磁盘空间的大小。
注意:hard link仅能在单一文件系统里进行。
而且:不可以连接到目录。因为连接到目录的时候,连接的数据需要连同被连接的目录下面的所有数据都建立连接。
二、symbolic link(符号连接,即快捷方式)
它也叫软连接,是创建一个独立的文件,而这个文件会让数据的读取指向它连接的那个文件的文件名。当源文件被删除之后,symbolic link会打开不了。
符号连接文件读取示意图如下:
由1号inode读取到连接文件的内容仅有文件名,根据文件名连接到正确的目录去取得目标文件的inode。最终读取到正确的数据。
symbolic link会占用inode和block。
需要注意的是,改动symbolic link文件时,其实改动的就是源文件。
软连接可以跨文件系统,也可以和目录连接。
实例:
分别创建文件linktest的硬连接link1和软连接link2.ln命令不加任何参数时,默认创建硬连接。
可以看出,硬连接文件和源文件的属性完全相同,包括inode号码。
下面删除源文件,发现硬连接仍然可以读取,而软连接不能读取。
相关文章推荐
- 【Linux入门学习之】Linux连接文件:硬连接和软连接
- linux学习入门10——linux文件系統挂载管理(linuxcast.net)(mount、umount、配置fstab进行自动挂载)
- (大数据工程师学习路径)第一步 Linux 基础入门----用户及文件权限管理
- 【Linux入门学习之】Linux文件权限与目录配置(已修改过)
- linux学习入门4——linux文件系統基本结构(linuxcast.net)(倒转树状结构、命名机制、查看文件类型)
- linux学习第九篇:特殊权限set_uid,set_gid,stick_bit以及软连接文件,硬链接文件
- linux学习入门23——linux系統常用命令(linuxcast.net)(日期、文件查看(head,tail等)、查看硬件信息、关机重启、归档压缩及查找命令)
- (大数据工程师学习路径)第一步 Linux 基础入门----环境变量与文件查找
- 【Linux】Shell学习笔记之四——文件和目录管理(硬连接和软连接)
- 【Linux入门学习之】Linux文件权限与目录配置
- linux学习入门 基础部分(5)[用户理解 用户涉及到的系统配置文件 用户管理《建立,删除,查看,更改》 权力下放 忘记密码。
- linux学习入门5——linux文件基本操作(linuxcast.net)(复制、移动、重命名、创建、删除文件及文件夹)
- Linux入门学习——文件的压缩与传输
- 【Linux入门学习之】Linux文件权限与目录配置
- 【Linux入门学习之】Linux的文件权限与目录配置
- Linux学习入门--文件编程学习三
- (大数据工程师学习路径)第一步 Linux 基础入门----目录结构及文件基本操作
- Linux入门学习-文件操作_第六章
- linux学习笔记入门之用户及文件权限
- linux学习入门9——linux文件系統(linuxcast.net)(磁盘分区格式化、创建文件系统、卷标设置及修复损坏文件系统)