ln软连接和硬连接的区别和联系
来源:互联网 发布:数据清洗包括什么 编辑:程序博客网 时间:2024/05/23 21:10
经常忘,记录下来备忘~
什么是链接?
链接简单说实际上是一种文件共享的方式。连接有软连接和硬连接(hard link)之分的,软连接(symbolic link)又叫符号连接,更常用。符号连接相当于Windows下的快捷方式。
它是用来干什么的?
你可以将链接简单地理解为 Windows 中常见的快捷方式(或是 OS X 中的替身),Linux 中常用它来解决一些库版本的问题,通常也会将一些目录层次较深的文件链接到一个更易访问的目录中。在这些用途上,我们通常会使用到软链接(也称符号链接)。
软链接和硬链接的区别是?
首先,从使用的角度讲,两者没有任何区别,都与正常的文件访问方式一样,支持读写,如果是可执行文件的话也可以直接执行。
那区别在哪呢?在底层的原理上。
为了解释清楚,我们首先在自己的一个工作目录下创建一个文件,然后对这个文件进行链接的创建:
$ touch myfile && echo "This is a plain text file." > myfile$ cat myfileThis is a plain text file.$ ln myfile hard$ ls -li25869085 -rw-r--r-- 2 unixzii staff 27 7 8 17:39 hard25869085 -rw-r--r-- 2 unixzii staff 27 7 8 17:39 myfile
在 ls 结果的最左边一列,是文件的 inode 值,你可以简单把它想成 C 语言中的指针。它指向了物理硬盘的一个区块,事实上文件系统会维护一个引用计数,只要有文件指向这个区块,它就不会从硬盘上消失。
你也看到了,这两个文件就如同一个文件一样,inode 值相同,都指向同一个区块。
然后我们修改一下刚才创建的 hard 链接文件:
$ echo "New line" >> hard$ cat myfileThis is a plain text file.New line
可以看到,这两个文件果真就是一个文件。
下面我们看看软链接(也就是符号链接)和它有什么区别。
$ ln -s myfile soft$ ls -li25869085 -rw-r--r-- 2 unixzii staff 36 7 8 17:45 hard25869085 -rw-r--r-- 2 unixzii staff 36 7 8 17:45 myfile25869216 lrwxr-xr-x 1 unixzii staff 6 7 8 17:47 soft -> myfile
诶,你会发现,这个软链接的 inode 竟然不一样啊,并且它的文件属性上也有一个 l 的 flag,这就说明它与之前我们创建的两个文件根本不是一个类型。
下面我们试着删除 myfile 文件,然后分别输出软硬链接的文件内容:
$ rm myfile$ cat hardThis is a plain text file.New line$ cat softcat: soft: No such file or directory
之前的硬链接没有丝毫地影响,因为它 inode 所指向的区块由于有一个硬链接在指向它,所以这个区块仍然有效,并且可以访问到。
然而软链接的 inode 所指向的内容实际上是保存了一个绝对路径,当用户访问这个文件时,系统会自动将其替换成其所指的文件路径,然而这个文件已经被删除了,所以自然就会显示无法找到该文件了。
为验证这一猜想,我们再向这个软链接写点东西:
$ echo "Something" >> soft$ lshard myfile soft
可以看到,刚才删除的 myfile 文件竟然又出现了!这就说明,当我们写入访问软链接时,系统自动将其路径替换为其所代表的绝对路径,并直接访问那个路径了。
总结
到这里我们其实可以总结一下了:
硬链接: 与普通文件没什么不同,inode都指向同一个文件在硬盘中的区块,相当于一个文件有两个名字。
软链接: 保存了其代表的文件的绝对路径,是另外一种文件,在硬盘上有独立的区块,访问时替换自身路径。
备注:I节点 :它是UNIX内部用于描述文件特性的数据结构.我们通常称I节点为文件索引结点(信息结点).i节点含有关于文件的大部分的重要信息,包括文件数据块在磁盘上的地址.每一个I节点有它自己的标志号,我们称为文件顺序号.I节点包含的信息 1.文件类型 2.文件属主关系 3.文件的访问权限 4.文件的时间截.
- ln软连接和硬连接的区别和联系
- ln命令 硬连接和软连接
- Linux硬链接和软连接的区别和联系
- ln 软连接(-s) 和 硬链接(-d)的区别
- 硬连接和软连接的区别, 硬连接和复制的区别
- 硬链接和软连接的区别
- 硬链接和软连接的区别
- 硬链接和软连接的区别:
- 硬链接和软连接的区别
- 硬链接和软连接的区别
- 硬链接和软连接的区别
- 硬链接和软连接的区别
- 硬链接和软连接的区别
- 硬链接和软连接的区别
- 硬链接和软连接的区别
- 软连接和硬链接的区别
- 软连接和硬链接的区别
- ln 命令——软连接和硬链接
- Oracle Spatial中SDO_Geometry说明及Demo例子
- POJ 1276 Cash Machine
- 每天学习一个linux命令--lsof
- ElasticSearch基本概念
- C#中using的使用方法
- ln软连接和硬连接的区别和联系
- 51Nod-1106-质数检测
- Apache Ranger中Yarn插件使用问题
- 51 NOD 1417 天堂里的游戏(博弈)
- Ubuntu 网卡配置
- 32:行程长度编码
- MySql的Blob字段报错:Data truncation: Data too long for column 'CONTENT' at row 1
- [编程题] 涂棋盘
- SpringBoot利用redis集成消息队列