第十六周 链接文件

一、文件的组成:

元数据: metadata 属性信息 大小 时间 属主 属组 权限 inode 索引节点

用户数据: user data 数据块 硬盘存放真实数据的地方 block

文件分为硬链接文件 hard link 和软链接文件或者符号链接 symbolic link == soft link


二、软链接文件:

当我们访问这个软链接文件时,其实就是在访问源文件的本身。就是相当于Windows上面的快捷方式 里面存放的是文件的路径 及可以执行这个文件

1)软链接文件和源文件属于不同的文件 inode是不一样 那么当我们对一个文件创建多个软链接时,其实就是多个inode指向同一个block。

2)那么当我们删除软链接文件时,其实只是删除了一个inode的指向,并不会对源文件造成影响。

3)如果我们删除的是源文件,那么该文件的所有软链接文件都会失效。

[root@jindada ~]# ll -i /etc/sysconfig/selinux
134477906 lrwxrwxrwx. 1 root root 17 Jul 6 02:14 /etc/sysconfig/selinux -> ../selinux/config
[root@jindada ~]# ll -i /etc/selinux/config
223842 -rw-r--r--. 1 root root 543 Jul 6 02:14 /etc/selinux/config

三、应用场景:

1)软件升级

2) 企业的代码发布 Jenkins 秒级发布

3)不方便移动的目录

4)数据回滚

5)程序读取


四、ln #创建软链接

选项:

-s #创建软链接

&& #前面的命令执行成功 才会执行后面的命令

|| #前面的命令执行失败,才会执行后面的命令

用法:
ln -s 源文件 链接文件


[root@jindada ~]# ln -s /etc/sysconfig/network-scripts/ifcfg-eth0 /root/eth0
[root@jindada ~]# ll
total 0
lrwxrwxrwx. 1 root root 41 Jul 15 20:01 eth0 -> /etc/sysconfig/network-scripts/ifcfg-eth0

[root@jindada ~]# mkdir nginx-1.17.0
[root@jindada ~]# ll
total 0
drwxr-xr-x. 2 root root 6 Jul 15 19:59 nginx-1.17.0
[root@jindada ~]# mkdir nginx-1.18.0
[root@jindada ~]# ll
total 0
drwxr-xr-x. 2 root root 6 Jul 15 19:59 nginx-1.17.0
drwxr-xr-x. 2 root root 6 Jul 15 19:59 nginx-1.18.0

[root@jindada ~]# ll
total 0
lrwxrwxrwx. 1 root root 41 Jul 15 20:01 eth0 -> /etc/sysconfig/network-scripts/ifcfg-eth0
drwxr-xr-x. 2 root root 6 Jul 15 19:59 nginx-1.17.0
drwxr-xr-x. 2 root root 6 Jul 15 19:59 nginx-1.18.0
[root@jindada ~]# ln -s nginx-1.17.0/ nginx
[root@jindada ~]# ll
total 0
lrwxrwxrwx. 1 root root 41 Jul 15 20:01 eth0 -> /etc/sysconfig/network-scripts/ifcfg-eth0
lrwxrwxrwx. 1 root root 13 Jul 15 20:04 nginx -> nginx-1.17.0/
drwxr-xr-x. 2 root root 6 Jul 15 19:59 nginx-1.17.0
drwxr-xr-x. 2 root root 6 Jul 15 19:59 nginx-1.18.0
[root@jindada ~]# rm -f nginx && ln -s nginx-1.18.0/ nginx #版本升级
[root@jindada ~]# ll
total 0
lrwxrwxrwx. 1 root root 41 Jul 15 20:01 eth0 -> /etc/sysconfig/network-scripts/ifcfg-eth0
lrwxrwxrwx. 1 root root 13 Jul 15 20:04 nginx -> nginx-1.18.0/
drwxr-xr-x. 2 root root 6 Jul 15 19:59 nginx-1.17.0
drwxr-xr-x. 2 root root 6 Jul 15 19:59 nginx-1.18.0

[root@jindada ~]# rm -f nginx && ln -s nginx-1.17.0/ nginx #版本回退
[root@jindada ~]# ll
total 0
lrwxrwxrwx. 1 root root 41 Jul 15 20:01 eth0 -> /etc/sysconfig/network-scripts/ifcfg-eth0
lrwxrwxrwx. 1 root root 13 Jul 15 20:07 nginx -> nginx-1.17.0/
drwxr-xr-x. 2 root root 6 Jul 15 19:59 nginx-1.17.0
drwxr-xr-x. 2 root root 6 Jul 15 19:59 nginx-1.18.0


五、软链接的特点:

概念

创建

跟源文件是不同类型的文件,inode是不一样的

软链接可以对目录创建 也可以跨文件系统

rm -f

删除软链接文件对源文件没有任何影响

删除源文件,软链接存在,但是会失效 出现 红底白字闪烁状

 

六、硬链接

概念: 多个文件的数据指向同一个数据块,多个不同的入口,inode是相同的,这样的文件互为硬链接

防止文件被误删除


七、创建硬链接

ln命令直接创建 只能对文件创建 不能对目录创建

用法:

ln 源文件 硬链接文件


[root@jindada ~]# cp /etc/hosts ./
[root@jindada ~]# ll
total 4
lrwxrwxrwx. 1 root root 41 Jul 15 20:01 eth0 -> /etc/sysconfig/network-scripts/ifcfg-eth0
-rw-r--r--. 1 root root 158 Jul 15 20:18 hosts
lrwxrwxrwx. 1 root root 13 Jul 15 20:07 nginx -> nginx-1.17.0/
drwxr-xr-x. 2 root root 6 Jul 15 19:59 nginx-1.17.0
drwxr-xr-x. 2 root root 6 Jul 15 19:59 nginx-1.18.0
[root@jindada ~]# ln hosts hosts_hard
[root@jindada ~]# ll
total 8
lrwxrwxrwx. 1 root root 41 Jul 15 20:01 eth0 -> /etc/sysconfig/network-scripts/ifcfg-eth0
-rw-r--r--. 2 root root 158 Jul 15 20:18 hosts
-rw-r--r--. 2 root root 158 Jul 15 20:18 hosts_hard
lrwxrwxrwx. 1 root root 13 Jul 15 20:07 nginx -> nginx-1.17.0/
drwxr-xr-x. 2 root root 6 Jul 15 19:59 nginx-1.17.0
drwxr-xr-x. 2 root root 6 Jul 15 19:59 nginx-1.18.0
[root@jindada ~]# ll -i
total 8
134317677 lrwxrwxrwx. 1 root root 41 Jul 15 20:01 eth0 -> /etc/sysconfig/network-scripts/ifcfg-eth0
134317704 -rw-r--r--. 2 root root 158 Jul 15 20:18 hosts
134317704 -rw-r--r--. 2 root root 158 Jul 15 20:18 hosts_hard


[root@jindada ~]# cat hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@jindada ~]# cat hosts_hard
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@jindada ~]# echo "123" >>hosts_hard
[root@jindada ~]# cat hosts_hard
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
123
[root@jindada ~]# cat hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
123

删除源文件或者硬链接文件都没有什么影响 只有硬链接为0时,这个文件才会被真正的删除


八、企业面试题:软链接和硬链接的区别?

1) 从概念
硬链接文件与源文件inode相同,软链接文件与源文件inode不同

2)从创建方式
创建命令不同:
软链接:ln -s
硬链接:ln

3)从创建对象
目录不能创建硬链接,并且硬链接不可以跨越系统的分区,软链接可以

4)从删除
删除软链接文件,对源文件无影响,但是删除软链接源文件对软链接文件有影响
删除硬链接文件,对源文件也无影响,并且删除源文件,对硬链接文件也无影响

你可能感兴趣的:(第十六周 链接文件)