Linux中硬连接(hard link)与软连接(symbolic link)的区别
来源:互联网 发布:java接受formdata 编辑:程序博客网 时间:2024/06/05 15:10
Linux Ext文件系统
Linux的Ext文件系统是如何与磁盘内存产生对应的呢?我们知道,在使用磁盘内存之前,需要为磁盘分区,然后为所分区域格式化出一个统一的文件系统(也有例外,如LVM与磁盘阵列技术)。那么,在这样一个统一的文件系统中,根据数据的不同,就可以将内存分为以下3种类型:
- inode 记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的block号码
- block 实际记录文件的内容,如果文件太大,则会占用多个block
- super block 记录文件系统的整体信息,包括inode/block的总量、使用量、剩余量,以及文件系统的格式与相关信息等
因此对于一个文件来说,它的inode号就类似于id的作用,用于存放关于该文件的一些基本信息。
硬连接(hard link)
若两个文件,拥有同样的inode,那么就产生了所谓的硬连接。以下基于VirtualBox Ubuntu操作系统来进行试验,使用本地的Cygwin ssh远程连接到虚拟机。
1、首先创建文件a,并查看其属性
2、创建a的硬连接b(使用ln命令),并查看a和b的属性
可以发现,a和b的属性完全一致,注意其中第二列数字表示的就是该文件的硬连接数
3、对于硬连接来说,它的好处就是“安全”。你将其中任何一个文件名删除(rm -f),文件都是存在的,因为文件的inode一直存在。
并且由于两个文件都是对应的相同的inode和block,因此对任何其中一个进行修改编辑,结果都会生效。
4、此时倘若在创建名称为a的文件,会有什么影响吗?
可以看到,此时此刻,重新创建的a和b并没有任何关系,不存在硬连接关系。
软连接(symbolic link)
软连接的意义就如同windows平台下的快捷方式,它是一个类型为l的文件,拥有自己的inode和block,对它进行操作也相当于对被link文件进行操作。
1、创建文件a,并创建其软连接b
2、为a写入一些数据,然后查看b的内容。删除a,再查看b的内容。
发现b连接失效了
3、重新创建文件a,然后查看b的内容。
发现b重新连接成功了,并且连接至了原来同名的a文件。
总结
换言之,对于硬连接来说,共享的是inode,重新创建的同名文件不具有相同的inode,因此于原来毫无干系。而对于软连接来说,它连接记录的是一个文件的绝对路径,因此当重新创建同名文件时候,软连接又重新生效了。
- Linux中硬连接(hard link)与软连接(symbolic link)的区别
- Linux中软连接(Symbolic Link)和硬链接(Hard Link)的区别
- Linux中软连接(Symbolic Link)和硬链接(Hard Link)的区别(转)
- 详解OSX(Unix)中的Hard Link与Symbolic Link((硬连接与软连接)
- 详解OSX(Unix)中的Hard Link与Symbolic Link((硬连接与软连接)
- 硬链接(hard link)和符号连接(symbolic link)的区别
- 硬链接(hard link)和符号连接(symbolic link)的区别
- 硬链接(hard link)和符号连接(symbolic link)的区别
- Symbolic link 与 Hard link 的区别
- 索引节点(inode)、硬连接(hard link)与符号连接(symbolic link)
- 硬连接(hard link)和软连接(symbolic link)
- linux下的软连接soft link和硬连接hard link《英语》
- Linux的硬链接(Hard Link)与符号链接(Symbolic Link)
- hard link与symbolic link区别
- Notes: Linux 文件系统的软连接和硬链接(soft link and hard link)
- Symbolic link and hard link的区别(linux)
- Symbolic link and hard link的区别(linux)
- [学习]Symbolic link and hard link的区别(linux)
- 关于java ArrayBlockingQueue 源码解析的小疑惑
- JSP/Servlet-----2、JSP基本原理
- iOS开发学习之C语言---C03 循环结构
- C#使用Log4Net记录日志
- Andrdid布局参数fill_parent,wrap_content,match_parent 的区别
- Linux中硬连接(hard link)与软连接(symbolic link)的区别
- git 将一个分支的修改同步到另一个分支
- 迷宫游戏
- doGet和doPost提交参数的区别
- java——实现文件下载功能
- JSP/Servlet-----3、JSP注释
- iOS开发学习之C语言---C04 一维数组、字符数组
- JavaScript中的高精度计时
- 有生词本的词典软件[挂起]