您当前的位置: 首页 >  linux

我什么都布吉岛

暂无认证

  • 6浏览

    0关注

    292博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

每天学点Linux(八)软链接和硬链接

我什么都布吉岛 发布时间:2018-07-04 11:28:34 ,浏览量:6

本部分参考的内容来源于: [1]理解 Linux 的硬链接与软链接

[2]Windows中的硬链接和软链接(hard link 和 Symbolic link)

[2]软链接ln -s以及如何解决其产生“Too many levels of symbolic links ”的错误? 修改时间: 20190921,重新整理并增加了理解; 20191021,创建软连接出现Too many levels of symbolic links错误; 20200919,软连接要使用绝对路径以防止错误,增加了快速查看的小总结; 结论:Linux用inode来区分文件,硬链接和软连接都使用ln指令来创建,不过软连接要加一个选项-s。对链接文件的修改等效于对被链接文件的修改,硬链接和软连接都只占用一份硬盘空间。硬链接通过inode找到数据,软连接则通过路径找到数据,所以删除/移动被链接对象,软连接失效,而硬链接没事儿。对于频繁更改路径的被链接文件,软连接没法管理权限。

一、Linux 的文件和inode号

UNIX/Linux 系统中除进程之外的一切皆是文件。

Linux文件数据分为两部分:用户数据 (user data) 与元数据 (metadata),分别存放在不同的区域【1】。在 Linux 中,元数据中的 inode 号才是文件的唯一标识而非文件名。文件名仅是为了方便人们的记忆和使用,系统或程序是通过 inode 号寻找正确的文件数据块。

设备文件也是一个文件,如 /dev/input/event5 可使用 read() 以字符流的方式被读取。

二、创建一个链接 2.1 硬链接的创建

硬链接(Hard link)是一个inode号相同的文件。创建可以使用link或者ln命令:

link oldfile newfile 
ln oldfile newfile

oldfile和newfile可以是绝对路径或者相对路径,创建一个硬链接会使得文件属性的link_count++; 硬链接数据块的释放在计数减为0时才释放,仅仅删除链接或者文件本身并不会丢失数据。

2.2 软链接的创建

软链接(Soft link,Symbolic link)是inode号不同的文件,其用户数据是一个指向。创建仅可使用ln命令:

ln -s oldfile newfile # 没有link -s oldfile newfile

oldfile和newfile可以是绝对路径或者相对路径。link_count保持不变。软连接对链接对象敏感,删除原对象或者重命名、或者路径更改都会导致链接失败,即空悬链接。oldfile最好使用绝对路径而不是相对路径,因为某些情况处出现Too many levels of symbolic links

二、硬链接(hard link)和软连接(symbolic link or soft link)的区别 2.1 硬链接优缺点

优点:

  • 同一个文件的硬链接的共享inode对系统资源占用少。
  • 原文件改名、删除等不会丢失数据 缺点:
  • 宿主文件必须存在
  • 文件系统必须一致
  • 文件不能是目录[3]
  • 链接及宿主本身权限一样
2.2 软连接优缺点

优点:解决了硬链接的缺点 缺点:

  • 占用inode资源
  • 原文件改名、路径更改和删除等会成为死链接
2.3 链接类型选择

链接需权限控制、文件是目录、文件系统不同采用软连接;路径经常更改且链接差异化属性[4]配置使用硬链接。

注释:

【1】用户数据存放在文件数据块 (data block);文件信息[(也叫元数据)则存放在元数据块(meta block)。比如你编辑的txt内容就是用户数据,而文件大小、创建时间、所有者及唯一的inode号就是文件信息。 【2】如VMware共享文件 【3】硬链接不能对目录创建是受限于文件系统的设计 【4】比如说,这个链接我只配置与原文件不一样的权限

关注
打赏
1658157489
查看更多评论
立即登录/注册

微信扫码登录

0.0370s