软连接和硬链接的区别

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

[[email protected]_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 源文件… 链接文件
在我理解,通俗上来讲:相当于给这个文件做了一个复制操作,起了一个新的名字,并且保持对这个新文件与旧文件保持同步更新
下面就是我创建的一个硬链接

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

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

[[email protected]_glbic ~]# rm   -rf abc.txt
[[email protected]_glbic ~]# cat aa
linux
mysql

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

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

[[email protected]_glbic ~]# ln -s aa bb
[[email protected]_glbic ~]# ls
aa               bb           
[[email protected]_glbic ~]# cat bb   #文件内容与源文件内容相同
linux
mysql
[[email protected]_glbic ~]# mv aa /tmp/aaaa           将源文件移走
[[email protected]_glbic ~]# ls
bb              
[[email protected]_glbic ~]# cat bb     #源文件路径改变后就不能查看到对应的数据了
cat: bb: No such file or directory
[[email protected]_glbic ~]#