软连接和硬链接的区别

首先我们先来了解一下Linux中文件的组成
stat命令查看i-节点信息

[root@mysql_glbic ~]# stat  abc.txt
  File: `abc.txt'
  Size: 6         	Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d	Inode: 66846740    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2019-03-22 21:09:05.763999427 +0800
Modify: 2019-03-22 21:09:05.763999427 +0800
Change: 2019-03-22 21:09:05.763999427 +0800

在这里插入图片描述
在Linux中查看一个文件的内容是如何找到数据的呢?
在这里插入图片描述
每个文件都会有自己对应的inode号,查看文件时他会根据自己的inode号找到找到自己相应的blocks也就是数据

接下来就重点讲一下硬链接和软连接的使用和区别
硬链接
就是一个文件有多个不同的文件名,多个不同的文件名对应相同的inode号,查看文件时,找到的数据都是相同的
命令格式:ln 源文件… 链接文件
在我理解,通俗上来讲:相当于给这个文件做了一个复制操作,起了一个新的名字,并且保持对这个新文件与旧文件保持同步更新
下面就是我创建的一个硬链接

[root@mysql_glbic ~]# ln abc.txt aa
[root@mysql_glbic ~]# ls
aa       abc.txt  install.log      
[root@mysql_glbic ~]# cat aa
linux
[root@mysql_glbic ~]# cat abc.txt
linux
[root@mysql_glbic ~]# echo mysql >>abc.txt      #对源文件追加内容
[root@mysql_glbic ~]# cat abc.txt
linux
mysql
[root@mysql_glbic ~]# cat aa    创建硬链接的文件也会显示
linux
mysql

删除源文件后查看所对应的硬链接还能查看到内容

[root@mysql_glbic ~]# rm   -rf abc.txt
[root@mysql_glbic ~]# cat aa
linux
mysql

注意:
不能为目录建立硬链接文件
硬链接与原始文件必须位于同一分区(文件系统)中

软连接
指向原始文件所在的路径,又称为符号链接
文件类型和权限肯定是lrwxrwxrwx
命令格式:ln -s 源文件… 链接文件
在我理解创建一个软连接后,生成的文件对应了不同的inode号,他的这个inode号对应的数据时源文件存储的位置
查看软连接文件时,找到了源文件的位置,在根据源文件的inode号找到源文件所对应的数据
也就是相当于windows中的快捷方式
下面创建一个软连接

[root@mysql_glbic ~]# ln -s aa bb
[root@mysql_glbic ~]# ls
aa               bb           
[root@mysql_glbic ~]# cat bb   #文件内容与源文件内容相同
linux
mysql
[root@mysql_glbic ~]# mv aa /tmp/aaaa           将源文件移走
[root@mysql_glbic ~]# ls
bb              
[root@mysql_glbic ~]# cat bb     #源文件路径改变后就不能查看到对应的数据了
cat: bb: No such file or directory
[root@mysql_glbic ~]# 
  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值