今天起,决定开始自学Linux命令及Shell脚本,并用Linux学习(命令行,Shell及其他知识点)这一系列记录下自己的心路历程,内容不分先后,只记录自己觉得有必要的,简单的就不记了!

第一个知识点:硬链接和软链接

一、链接的定义:在linux中,如果要维护同一份文件的两份或多份副本,除了保存多份单独的物理副本之外,还可以使用只保存一份物理副本和多份虚拟副本的方式,这种虚拟的副本就称之为链接。---《Linux命令行与脚本大全》

上面的解释来自书本,可以说是解释的很清楚了,按照我自己的理解就是:在linux系统中,如果要备份某个文件,除了复制一份原文件之外,还能使用虚拟文件的方式,相比window而言,确实是多了一种方式,因为windows中

我们通常是使用复制原文件的方式来备份文件。可是如果仅仅看这个解释,我还是不太明白这个虚拟是什么意思,它到底和物理副本有什么区别?通过一番测试和调研后得出如下结论:

链接又分为软链接和硬链接:

1、硬链接:硬链接相当于复制了一份原文件,它和原文件一模一样,包括文件索引节点号,所以它会占用存储空间,如果原文件被删除,它依然存在;

2、软链接:软链接只是创建了一个指向原文件的指针,它有新的文件索引节点号,不会占存储空间,如果原文件被删除,它也会失效;

共同点:当改变原文件内容的时候,链接文件的内容也会被同步修改;

二、命令介绍

创建链接文件的方式有两种,一种是cp命令(复制),一种是ln命令(链接),两种都能实现,从cp我们就能知道,链接其实是备份文件的的一种形式(个人观点!)

cp命令:

创建硬链接:cp -l src des

创建软链接:cp -s src des

ln命令:

创建硬链接:ln src des

创建软链接:ln -s src des

这里需要说一下自己学习过程中的一些心路历程:刚开始创建链接的时候搞不清楚src和des,不知道到底是给哪个文件创建一个副本,传参数的时候src和des到底哪个才是创建之后的文件,主要是因为没有系统的看书,

只是从别人的博客中看,所以直到看了书才明白,src和des的意思是,给源文件src创建一个副本des,所以在传这两个参数的时候,如果两个文件不在同一个目录,我们也可以连同文件所在的目录一起传入,这个地方

真是被自己的悟性蠢哭了呀!!!

三、命令实战

上面是对基本概念的解释,也是必备的理论部分,下面是实践部分,说的对不对,用命令验证一下不就见分晓了吗?

说了使用方式,下面直接上命令吧:我以ln命令为例,cp只要注意参数就行,不举例说明!

1、创建一个空文件作为源文件

2、给srcfile.txt创建一个硬链接

创建硬链接desfile1.txt后发现这两个文件的文件索引值是一样的,说明它们是完全相同的两个文件。

3、给srcfile.txt创建一个软链接

可以看出软链接文件的文件类型为l,且后面的表现形式也不一样,有一个->这样的符号指向源文件,且索引值也与源文件不一致,并且是新分配的!

这就验证了链接定义中所说的!

4、修改源文件内容查看硬链接文件和软链接文件的内容

从上面的实践可以看出,当源文件内容修改之后,对应的软链接文件和硬链接文件的内容也一并修改了!

5、删除源文件,查看链接文件

从上面的例子可以看出:当删除源文件之后,硬连接的文件依然存在,且有效,内容也能查看,但是软链接的文件失效,查看内容时会提示找不到文件!

这是不是验证了链接定义中的内容!!!

6、将源文件再次创建

从上面的例子可以看出:当我新建一个软链接指向的文件之后,软链接文件恢复,且指向新的文件,同时文件内容也会随着新文件的改变而改变,但是原来的硬链接文件还是删除文件的副本,并不是新建文件的副本。

所以说软链接会随着它所指向的那个文件的改变而改变,只要指向的文件名不变,即便删除再新建也会使其有效,只要文件名存在即可:

但是硬链接就是源文件的一个物理副本,如果原文件被删除,它依然有效,新建一个一模一样的文件,它依然是最原始的源文件;

由此可以看出,这个软链接确实有点花心啊,就像某些男生找女朋友,分了一个觉得自己死了,再找到一个又活过来了,不想硬链接,找到一个就这一直到天荒地老!哈哈~~

好了,对于软链接和硬链接的介绍就到这里,同样的可以用cp命令实现哦!!

Linux学习(一):软链接和硬链接的更多相关文章

  1. Linux学习笔记 软链接和硬链接

    Linux 中,"everything is file".接下来给大家介绍 linux 如何通过链接,达到节省磁盘空间.共享文件等目的.链接文件有两种方式,软链接(soft lin ...

  2. 深入解读键值产生原理,linux中的软链接和硬链接(转)

    键值 = 文件标示符 + 项目ID 当用到进程间的通信时, 必须要注意到的是键值是怎么产生的,我们知道任何一个文件时通过文件名来访问的, 而内核在对应的给其一个值,也就是文件标示符. 系统建立IPC通 ...

  3. 2017-7-18-每日博客-关于Linux下的软链接和硬链接.doc

    ln命令 该命令在文件之间创建链接.这种操作实际上是给系统中已有的某个文件指定另外一个可用于访问它的名称.对于这个新的文件名,我们可以为之指定不同的访问权限,以控制对信息的共享和安全性的问题. 如果链 ...

  4. Linux常用基本命令(软链接与硬链接 )

    硬链接:相当于文件的多个入口,作用:备份文件,创建快照等 软链接:相当于windows的快捷方式 命令格式: ln option 源文件 目标文件 -s: 创建软链接 1,创建硬链接: ghostwu ...

  5. Linux文件的软链接和硬链接

    1.Linux链接概念 Linux链接分两种,一种被称为硬链接(Hard Link).还有一种被称为符号链接(Symbolic Link).默认情况下.ln命令产生硬链接. 1.1索引节点 索引节点是 ...

  6. Linux中的软链接与硬链接

    软链接相当于windows的快捷方式,当源文件不存在时,软链接失效. 链接是指向文件名,当指向的文件名字删除的时候,就找不到源文件了.硬链接是指向文件本身,删除一个文件名字,还是可以找到源文件的.ls ...

  7. linux下的软链接与硬链接

    在 Linux 底下的连结档有两种,一种是类似 Windows 的快捷方式功能的文件,可以让你快速的链接到目标文件(或目录);这种链接称为软链接. 另一种则是透过文件系统的 inode 连结来产生新档 ...

  8. linux 创建软链接和硬链接

    Linux 系统中有软链接和硬链接两种特殊的“文件”. 软链接可以看作是Windows中的快捷方式,可以让你快速链接到目标档案或目录. 硬链接则透过文件系统的inode来产生新档名,而不是产生新档案. ...

  9. Linux 软链接和硬链接的理解与学习

    理解前提: 首先要知道 Linux任意一个文件包含2个信息:第一个信息就是文件本身存的内容,第二个信息是文件的控制信息(读写,路径,大小等等),这2个信息是分开存储的,明白这点非常重要 理解总结: L ...

随机推荐

  1. LoadRunner添加Weblogic监控的注意事项(非单纯的操作步骤)

    LoadRunner添加Weblogic监控的注意事项(非单纯的操作步骤)   关于LR如何监控Weblogic(JMX方式)的操作就不在这里多说了,帮助文件和网上的介绍已经非常多了,关键是对各操作步 ...

  2. nodejs vue 微信公众号开发(二)申请微信测试号

    1.打开微信测试公众号开发平台http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login 扫码登陆

  3. Vue创建项目环境

    目录 Vue项目环境搭建 Vue项目创建 pycharm配置并启动vue项目 vue项目目录结构分析 vue组件(.vue文件) 全局脚本文件main.js(项目入口) 改写 Vue项目环境搭建 &q ...

  4. 自己整理的一个访问SQLite3数据库的C++类

    原文地址:自己整理的一个访问SQLite3数据库的C++类作者:vigra 近日,对SQLite3的使用进行了研究.真不愧是优秀的嵌入数据库,API接口也极其简捷.基本上只要使用以下几个接口就能完成数 ...

  5. vue之vant组件下拉加载更多

    vant地址:https://youzan.github.io/vant/#/zh-CN/intro 基础用法 List 组件通过loading和finished两个变量控制加载状态,当组件滚动到底部 ...

  6. iOS开发本地推送

    1.简介 本地通知是由本地应用触发的,它是基于时间行为的一种通知形式,例如闹钟定时.待办事项提醒,又或者一个应用在一段时候后不使用通常会提示用户使用此应用等都是本地通知. 2.创建UILocalNot ...

  7. 版本控制git之三-多人协作 变基 推送 拉取 删除远程分支

      版本控制git之三-多人协作 wangfeng7399已关注0人评论350人阅读2019-02-20 21:33:08   如果你想获得一份已经存在了的 Git 仓库的拷贝,比如说,你想为某个开源 ...

  8. spring容器创建bean对象的方式

    xml文件中有bean的配置,而且这个bean所对应的java类中存在一个无参构造器 那么这个时候spring容器就可以使用反射调用无参构造器来创建实例了(常规的方式) 通过工厂类获得实例(工厂类实现 ...

  9. 关于c.toArray might (incorrectly) not return Object[] (see 6260652)的问题解答

    最近学习jdk1.8源码时,发现ArrayList(Collection<? extends E> c)这个构造函数中,有句有意思的描述:c.toArray might (incorrec ...

  10. javaSpring学习总结day_01

    本文章用于总结自己学习知识,有不足或错误之处清谅解. bean.xml 文件的读取方式: ClassPathXmlApplicationContext: 它是只能加载类路径下的配置文件 推荐 1.加载 ...