关于Linux的软链接和硬链接的一些概念

摘要:
为了方便起见,我在根分区(/)下创建一个测试文件夹,然后创建一个新的jys文件来创建软链接和硬链接。区别在于软链接文件的大小和创建时间与源文件不同。硬链接文件和源文件的大小和创建时间相同。软链接就像快捷方式,方便我们打开源文件。这在Windows中是众所周知的。硬链接的应用是什么?

一 建立软链接和硬链接的语法
软链接:ln -s 源文件 目标文件
硬链接:ln 源文件 目标文件
源文件:即你要对谁建立链接

二 什么是软链接和硬链接
1,软链接可以理解成快捷方式。它和windows下的快捷方式的作用是一样的。
2,硬链接等于cp -p 加 同步更新。

为了方便说明,我在根分区(/)下建立test文件夹,然后新建了一个jys文件

关于Linux的软链接和硬链接的一些概念第1张

建立软链接和硬链接:

关于Linux的软链接和硬链接的一些概念第2张

区别: 软链接文件的大小和创建时间和源文件不同。软链接文件只是维持了从软链接到源文件的指向关系(从jys.soft->jys可以看出),不是源文件的内容,大小不一样容易理解。
硬链接文件和源文件的大小和创建时间一样。硬链接文件的内容和源文件的内容一模一样,相当于copy了一份。

关于Linux的软链接和硬链接的一些概念第3张

但是简单的copy的文件创建文件的时间应该是复制文件时的时间,肯定不会像硬链接那样和创建源文件的时间相同。你想的没错。

关于Linux的软链接和硬链接的一些概念第4张

但是只要加一个选项-p,时间就一样了

关于Linux的软链接和硬链接的一些概念第5张

关于Linux的软链接和硬链接的一些概念第6张


那么cp -p的文件是不是就相当于硬链接了呢?其实不然,对于源文件的内容有修改,硬链接文件会同步更新修改,始终保持和源文件的内容相同,而复制的文件则不可能做到这一点。

关于Linux的软链接和硬链接的一些概念第7张

所以,硬链接等于cp -p加同步更新。
软链接像快捷方式,方便我们打开源文件,这一点在windows中深有体会,那硬链接有哪些应用呢?
在多用户的操作系统里,你写一个脚本,程序等,没有完成,保存后等下次有时间继续写,但是其他用户有可能将你未写完的东西当成垃圾清理掉,这时,你对你的程序,脚本等做一个硬链接,利用硬链接的同步更新,就可以方式,别人误删你的源文件了。

三,删除源文件多软链接和硬链接的影响

关于Linux的软链接和硬链接的一些概念第8张

查看软链接文件,查看的文件不存在。和windows一样,删除源文件,快捷方式也用不了。但是删除源文件,为什么硬链接文件还可以查看呢?
这里要简单说下i节点了。i节点是文件和目录的唯一标识,每个文件和目录必有i节点,不然操作系统就无法识别该文件或系统,就像没有上户口的黑户。linux操作系统是不识别些字母的,像这些jys ,jys.hard操作系统根本不知道是什么玩意。

关于Linux的软链接和硬链接的一些概念第9张

可以看出硬链接文件和源文件i节点号相同,并且一个i节点可以对应多个文件名。

关于Linux的软链接和硬链接的一些概念第10张

如图,删除了jys,只是删除了从920586到jys的映射关系,不影响它和jys.hard的映射关系。此图也解释了硬链接的同步更新,对源文件修改,操作系统只认i节点,于是操作系统就将修改内容写进所有i节点相同名字不同的文件。

四.它们的共同点和不同点

  软链接:
        1.软链接,以路径的形式存在,类似于Windows操作系统中的快捷方式
        2.软链接可以跨文件系统
        3.软链接可以对一个不存在的文件名进行链接
        4.软链接可以对目录进行链接
        5.软链接原文件/链接文件拥有不同的inode号,表明他们是两个不同的文件
        6.当源文件目录改变后,软连接访问不到
硬链接:
1.硬链接,以文件副本的形式存在,但不占用实际空间 2.不允许给目录创建硬链接(可以通过参数添加但仅限root用户) 3.硬链接只有在同一个文件系统中才能创建 4.不能对不存在的文件创建硬链接 5.硬链接原文件/链接文件公用一个inode号,说明他们是同一个文件 6.当源文件目录改变后,硬连接可以访问

五.使用场景

软链接一般被用来设置可执行文件的快捷方式的路径。

一般比较重要的文件我们担心文件被误删除且传统复制备份方式占用double数量的空间会造成浪费,可以使用硬链做备份来解决;

免责声明:文章转载自《关于Linux的软链接和硬链接的一些概念》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇CentOS 7磁盘寻找不到,卡在sulogin,造成的开机失败问题--Error getting authority...mysql远程连接数据库下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Linux中 diff与patch的深入分析(转)

本文转自http://linux.chinaitlab.com/c/805820.html 1) diff的传统格式输出.   ############################################   cat before.txt   输出:   This is a line to be deleted   This is a line...

(五)cobbler自定义系统安装

注意:需要提前获取到物理机对应的网卡的MAC地址,例如我这里使用虚拟机进行演示 cobbler system add --name=linux-node2.com --mac=00:50:56:22:50:4D --profile=CentOS-7-x86_64 --ip-address=192.168.92.131 --subnet=255.255...

Linux 创建网络会话

RHEL7系统支持网络会话功能,允许用户在多个配置文件中快速切换(非常类似于firewalld防火墙服务中的区域技术)。如果我们在公司网络中使用笔记本电脑时需要手动指定网络的IP地址,而回到家中则是使用DHCP自动分配IP地址。这就需要麻烦地频繁修改IP地址,但是使用了网络会话功能后一切就简单多了—只需在不同的使用环境中激活相应的网络会话,就可以实现网络配...

linux下安装rabbitmq 集群

1.下载erlang官网地址 http://www.erlang.org/download 挑选合适的版本 然后 wget 比如目前18.3运行命令 wget http://erlang.org/download/otp_src_18.3.tar.gz 2.使用yum安装下必须的配件:  yum install gcc glibc-devel make n...

第八章 蜂鸣器驱动

主要看一下:Linux驱动代码重用 编译是由多个文件组成的 Linu x 驱动 对于复杂的 Linux 驱 动,就需要使用多个源代码文件存放不同的功能代码,这样做有利于代码分类和管理。 C或C++语言中编译多个源代码文件时,如果a.c使用 b.c文件中的函数,需要在 a.c 文件中使用 extern 预先定义 b.c中的函数, extern 的作用就是告诉...

linux jna调用so动态库

文中提到:为什么命名为libtest.so而不是test.so呢?因为jna在找so文件的时候,要匹配前缀为lib的so文件 http://zhenaihua0213.blog.163.com/blog/static/50887766201129104611955/在linux下使用jna调用本地方法的时候,需要将C写成的程序编译为so文件 1、写一个简...