Linux之硬链接与软链接

硬链接与软链接

A1 前言

1、我们知道文件,都有文件名和数据。这在Linux上被分为两部分:

  • 用户数据(user data)
  • 元数据(metadata)
    • 用户数据,即文件数据块(data block),数据块是记录文件真实内容的地方
    • 元数据,是文件的附加属性,如文件大小、创建时间、所有者等信息。

2、在Linux中,元数据中的inode号(inode是文件元数据的一部分但其并不包含文件名,inode号即索引节点号)才是文件的唯一标识而不是文件名。(例如对一个文件重命名(mv)但inode号仍相同)。

3、Linux中,文件名仅仅是为了方便人们的记忆和使用,系统或程序通过inode号寻找正确的文件数据块。如图

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JRb1uM0o-1615943332998)(00_Linux.assets/image001.jpg)]

4、查看inode号:statls -i

A2 why

为解决文件的共享使用,Linux引入了两种链接:硬链接(hard link)与软链接(又称符号链接,即soft link 或 symbolic link)。

  • 解决了文件的共享使用
  • 隐藏文件路径
  • 增加权限安全
  • 节省存储
A3 硬链接

what

  • 若一个inode号对应多个文件名,则称这些文件硬链接。
  • 换言之,同一个文件使用多个别名。
  • 命令
    • link oldfile newfile
    • ln oldfile newfile
    • 查找:find / -inum 1141这里的1141不固定,是inode号

特性

  • 文件有相同的inode及data block
  • 只能对已存在的文件进行创建
  • 不能交叉文件系统进行硬链接的创建
  • 不能对目录进行创建,只可对文件创建(受限于文件系统的设计)
  • 删除一个硬链接文件并不影响其他有相同inode号的文件

特性展示

  • # ls -li 
    total 0 
     
    // 只能对已存在的文件创建硬连接
    # link old.file hard.link 
    link: cannot create link `hard.link' to `old.file': No such file or directory 
     
    # echo "This is an original file" > old.file 
    # cat old.file 
    This is an original file 
    # stat old.file 
     File: `old.file'
     Size: 25           Blocks: 8          IO Block: 4096   regular file 
    Device: 807h/2055d      Inode: 660650      Links: 2 
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root) 
    ... 
    // 文件有相同的 inode 号以及 data block 
    # link old.file hard.link | ls -li 
    total 8 
    660650 -rw-r--r-- 2 root root 25 Sep  1 17:44 hard.link 
    660650 -rw-r--r-- 2 root root 25 Sep  1 17:44 old.file 
     
    // 不能交叉文件系统
    # ln /dev/input/event5 /root/bfile.txt 
    ln: failed to create hard link `/root/bfile.txt' => `/dev/input/event5': 
    Invalid cross-device link 
     
    // 不能对目录进行创建硬连接
    # mkdir -p old.dir/test 
    # ln old.dir/ hardlink.dir 
    ln: `old.dir/': hard link not allowed for directory 
    # ls -iF 
    660650 hard.link  657948 old.dir/  660650 old.file
    
A4 软链接

what

  • 若文件用户数据块中存放的内容是另一个文件的路径名的指向,则该文件就是软链接。
  • 软链接本身就是一个普通文件,只是数据块内容有点特殊。
  • 本身有自己的inode号以及用户数据块。

特点

  • 软链接有自己的文件属性及权限等

  • 可对不存在的文件或目录创建软链接

  • 软链接支持交叉文件系统

  • 软链接可对文件或目录创建

  • 创建软链接时,链接计数i_nlink不会增加

  • 删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软链接被称为死链接(即dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。

  • (img-tscrPK7j-1615943333011)(00_Linux.assets/image002.jpg)]

  • 软链接创建时原文件的路径指向使用绝对路径较好,相对路径的话原文件移除后可能会成为死链接。

相关资料

https://www.ibm.com/developerworks/cn/linux/l-cn-hardandsymb-links/index.html#listing2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CoreDao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值