链接文件

链接文件

ln 源文件 硬链接文件
ln -s 源文件 硬链接文件

软链接|硬链接两种

*ln 创建链接文件(默认不带参数时是创建硬链接)
*硬链接:多个文件名指向同一个索引节点(作用:允许一个文件拥有多个有效路径名(以防误删源数据))
*文件的硬链接数
*硬链接数,不是软链接
*软链接:快捷方式(包含指向另一个文件的信息)
[root@XMJ xmj]#ln -s xmjbe zhufei
*主:硬链接索引节点相同|软链接不同

文件的链接

[root@XMJ oldboy]# touch oldboyfile
[root@XMJ oldboy]# ls -li
total 0
303107 -rw-r--r-- 1 root root 0 Jul 14 19:13 oldboyfile
[root@XMJ oldboy]# ln oldboyfile  oldboyfile_hard_link
[root@XMJ oldboy]# ls -li
total 0
303107 -rw-r--r-- 2 root root 0 Jul 14 19:13 oldboyfile
303107 -rw-r--r-- 2 root root 0 Jul 14 19:13 oldboyfile_hard_link
[root@XMJ oldboy]# ls -li
total 0
303107 -rw-r--r-- 2 root root  0 Jul 14 19:13 oldboyfile
303107 -rw-r--r-- 2 root root  0 Jul 14 19:13 oldboyfile_hard_link
303108 lrwxrwxrwx 1 root root 10 Jul 14 19:15 oldboyfile_soft_link -> oldboyfile
[root@XMJ oldboy]# 

*文件名是放在上级目录的block里面
*删除链接,其它的链接不受影响(原因:索引节点还在,只是删除了一个数据的指向,当文件最后一个链接被删除之后,所有的文件丢失,或者文件系统通过fsck监测时,会被回收调)
[root@XMJ xmj]# echo test > xmjbe 
[root@XMJ xmj]# cat xmjbe 
test
[root@XMJ xmj]# cat dch01 
test
[root@XMJ xmj]# rm -fr xmjbe 
[root@XMJ xmj]# cat dch01 
test
[root@XMJ xmj]# 

目录的链接

[root@XMJ oldboy]# mkdir oldboydir
[root@XMJ oldboy]# ll -lirt #和.文件互为链接文件
total 4
303107 drwxr-xr-x 2 root root 4096 Jul 14 19:39 oldboydir
[root@XMJ oldboy]# ls -lirta oldboydir/
total 8
303106 drwxr-xr-x 3 root root 4096 Jul 14 19:39 ..
303107 drwxr-xr-x 2 root root 4096 Jul 14 19:39 .
[root@XMJ oldboy]# ln oldboy oldboy_hard_link   #不能做硬链接
*硬链接索引节点相同,但是目录又可以在不同的分区,所以目录不能创建硬链接
ln: accessing `oldboy': No such file or directory
[root@XMJ oldboy]# ln -s oldboy oldboy_hard_link
[root@XMJ oldboy]# ls -lrt
total 4
drwxr-xr-x 2 root root 4096 Jul 14 19:39 oldboydir
lrwxrwxrwx 1 root root    6 Jul 14 19:51 oldboy_hard_link -> oldboy
[root@XMJ oldboy]# 

关于文件删除

*若源文件被删除,则软链接失效|但是源文件又可以通过硬链接重新被创建回来,从而恢复软链接
*Linux下通过mkdir创建一个目录,它的链接数是2:本身是一个.是一个

关于链接的面试题:
1.简述软链接和硬链接的区别:

*介绍软硬链接的概念
*对于文件的软硬链接的区别
*对于目录的软硬链接的区别

硬链接:一个硬链接是一个已存在文件的另一个名字,这个链接和源文件很难发现有不同的地方(除了名称不一样),从技术上讲,他们同享一个inode节点,并且这个节点包含一个文件的所有真实信息(各种属性,非文件名和文件内容),把inode当成文件的说法是不对的   你不能为一个目录创建硬链接,并且硬链接不能穿越文件系统的边缘  ,然而上述限制在POSIX中不被限制
软链接:符号链接是一个特殊的文件类型,这不是所有的内核都支持的,符好链接实际上就是通过名字指向一个不同的文件(和源文件是不同的文件),当打开,读取,写入等等大多数操作时,会通过符号链接到文件,内核会自动找到链接并且操作链接的源,但是一些操作如:删除等工作是针对链接本身的,而不是链接的源

^^^^总结:

[关于文件]
*删除软链接(相当于删除快捷方式),对源文件和硬链接无任何影响
*删除硬链接(硬链接inode相同),对源文件及软链接无任何影响
*删除源文件,对硬链接文件没有影响,但是会导致软链接失效
*同时删除源文件和所有的硬链接文件,整个文件都会被删除
*源文件和硬链接文件具有相同的索引节点号,可以被认为是同一个文件
*源文件和软链接文件,索引节点号不同,因此是不同的文件(软链接是源文件的快捷方式)

[关于目录]
*不可以创建硬链接文件,但是可以创建软链接
*对于目录的软链接产生,是生产场景中常用的技巧
*目录的硬链接不能跨越文件系统(分区)
*每个目录下面都有一个硬链接.和上级目录的硬链接..

*很多硬件设备中的快照功能,使用的就是此类硬链接的原理
*软链接可以跨越文件系统,硬链接不可以

2.linux下文件系统删除原理

*读取文件过程:
    文件名(硬链接)--inode--文件内容(block)
*文件被真正删除:
    (1)源文件和链接文件都被删除
    (2)没有进程读此文件 
    (3)其它新文件将其覆盖掉或者被文件系统回收
*创建硬链接时,i_link在计数,当i_link为0时,文件被删除
*i_count引用计数,当有程序读此文件时,i_count计数,当i_count=0时文件被删除
*文件被覆盖或者文件系统主动被回收
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值