Linux下的软连接和硬链接
由于教学上的原因,需要下载Android源码,后来使用repo时,系统提示需要python2,我的系统中是两个都有的,但是默认是python3,无法下载,通过创建了个链接搞定,下面就来说说linux下的链接。
1.Linux链接概念
Linux下链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接,通过使用-s选项,产生符号链接,也就是软链接。硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode
Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。符号连接(Symbolic Link),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
2.通过实验加深理解
[munication@develop LinuxCode]$ touch file1.txt #创建一个测试文件file1.txt
[munication@develop LinuxCode]$ ln file1.txt file2.txt #创建f1的一个硬连接文件file2.txt
[munication@develop LinuxCode]$ ln -s file1.txt file3.txt #创建f1的一个符号连接文件file3.txt
[munication@develop LinuxCode]$ ls -li # -i参数显示文件的inode节点信息
总用量 0
11688147 -rw-r--r-- 2 munication munication 0 5月 8 05:26 file1.txt
11688147 -rw-r--r-- 2 munication munication 0 5月 8 05:26 file2.txt
11688148 lrwxrwxrwx 1 munication munication 9 5月 8 05:27 file3.txt -> file1.txt
从上面的结果中可以看出,硬连接文件f2与原文件f1的inode节点相同,均为11688147,然而符号连接文件的inode节点11688148,明显是不同的。
[munication@develop LinuxCode]$ echo "I'm file1.txt" >> file1.txt #向file1.txt文件中写入内容 I'm file1.txt
[munication@develop LinuxCode]$ cat file1.txt #查看file1.txt内容
I'm file1.txt
[munication@develop LinuxCode]$ cat file2.txt #查看file2.txt内容
I'm file1.txt
[munication@develop LinuxCode]$ cat file3.txt #查看file3.txt内容
I'm file1.txt
[munication@develop LinuxCode]$ rm -f file1.txt #删除file1.txt文件
[munication@develop LinuxCode]$ cat file2.txt #查看file2.txt内容,文件依旧健在
I'm file1.txt
[munication@develop LinuxCode]$ cat file3.txt #查看file3.txt内容,文件已经烟消云散,不复存在了
cat: file3.txt: 没有那个文件或目录
通过上面的测试可以看出:当删除原始文件file1.txt后,硬连接file2.txt不受影响,但是符号连接file3.txt文件无效
通过上述实践,很容易得出如下结论:
1).删除符号连接file3.txt,对file1.txt,file2.txt不会产生影响;
2).删除硬连接file2.txt,对file1.txt,file3.txt也没有影响;
3).删除原文件file1.txt,对硬连接file2.txt没有影响,会导致符号连接file3.txt失效;
4).同时删除原文件file1.txt和file1.txt的硬连接file2.txt,整个文件才会真正的被删除。
Linux下的软连接和硬链接的更多相关文章
- linux系统下的软连接与硬链接
前几天在linux系统下安装mongoDB,然后运行脚本导入数据的时候遇到了链接库查询不到的情况,如图 1所示.当时是通过创建软连接的方式解决的这个问题.虽然,通过网上的教程解决了这个问题,但是对于软 ...
- linux下的符号链接和硬链接
一 Linux下链接文件的作用 Linux特别注重用户的权限,而链接文件的作用也正体现了这个方面.对源文件的位置进行了隐藏,用户只对链接文件操作. 二 链接文件的区别 链接文件分为硬链接文件和软 ...
- 2017-7-18-每日博客-关于Linux下的软链接和硬链接.doc
ln命令 该命令在文件之间创建链接.这种操作实际上是给系统中已有的某个文件指定另外一个可用于访问它的名称.对于这个新的文件名,我们可以为之指定不同的访问权限,以控制对信息的共享和安全性的问题. 如果链 ...
- 【linux命令】软连接和硬链接的区别(ln命令)
Linux 文件系统把硬盘分为三个部分:超级块.inode 列表.数据区 inode 指示:该文件的数据存放在数据区的哪些块内.因为这个“映射”关系不能变更,因此,inode 相当于代表着文件本身.( ...
- Linux命令 – ln 软连接与硬链接区别介绍
ln命令可以生成软链接和硬链接,也可叫做符号链接和实体链接. 有兴趣深入理解的可以查阅相关文档,一般的读者只需记住以下几点即可: 不管是软链接还是硬链接都不会额外增加磁盘空间(虽然实际情况可能会多占用 ...
- linux下的软链接与硬链接
在 Linux 底下的连结档有两种,一种是类似 Windows 的快捷方式功能的文件,可以让你快速的链接到目标文件(或目录);这种链接称为软链接. 另一种则是透过文件系统的 inode 连结来产生新档 ...
- Linux下创建软、硬链接
在linux系统中,内核为每一个新创建的文件分配一个Inode(索引节点),每个文件都有唯一的inode号.文件属性保存在索引节点里,在访问文件时,索引节点被复制到内存,从而实现文件的快速访问. 链接 ...
- linux中软连接和硬链接的区别
linux中创建软连接和硬链接的方法: 软连接: ln -s oldfile slink 硬连接: ln oldfile hlink linux中创建软连接和硬链接的区别: 原理上,硬链 ...
- Linux链接文件——软连接和硬链接
Linux链接文件——软连接和硬链接 摘要:本文主要介绍了Linux系统中的链接文件. 文件系统 在Linux系统中,将文件分为两个部分:用户数据和元数据. 元数据(inode) 元数据即文件的索引节 ...
随机推荐
- eclipse中使用git上传项目
eclipse中使用git上传项目 先需要上传到本地仓库 先找到此选项打钩 再如下 再添加的属性则可以自动填充邮箱和密码 之后 右键选择import 点击找到git 选中 下一步 如果没有找到git ...
- thinkphp3.2.3如何只改变地址url中的某一个分隔符,其它保持不变
今天教大家一个关于使用thinkphp3.2.3改变只改变地址url中的某一个分隔符的方法,首先大家来看看这个地址! 它的原始地址应该是/Home/Index/index/page/2.html,那我 ...
- Python中的正则
regex_lst = [ ('字符组',), ('非打印字符',), ('特殊字符',), ('定位符',), ('限定符',), ('re模块',), ('分组命名',), ('或匹配',), ( ...
- 51nod_1255字典序最小的子序列
作为贪心算法的某道例题,赶脚药丸啊..这么简单的代码重构第三遍才过... 首先是贪心算法思想, 1,证明贪心算法有效性:贪心策略,使用栈结构实现,遍历输入串中所有元素,对于某个元素有如下两种情况: 情 ...
- Kubernetes配置Ceph RBD StorageClass
1. 在Ceph上为Kubernetes创建一个存储池 # ceph osd pool create k8s 2. 创建k8s用户 # ceph auth get-or-create client.k ...
- datatime来计算代码段运行时长
小知识点:编程中一般都是先乘后除,这样结果更为精确 先定义 DataTime startTime = DataTime.Now; 中间是运行代码 最后TimeSpan ts = DataTime.No ...
- Java之基于Apache jar包的FTPClient上传
首先,准备工作: http://pan.baidu.com/s/1dD1Utwt 从以上链接下载Apache的jar包,并将其复制到工程的WEB-INF下的lib包里,在此,准备工作就已经完成了. 具 ...
- 【Container With Most Water】cpp
题目: Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, a ...
- 【Linked List Cycle】cpp
题目: Given a linked list, determine if it has a cycle in it. Follow up:Can you solve it without using ...
- IE hasLayout详解
hasLayout定义 haslayout 是Windows Internet Explorer渲染引擎的一个内部组成部分.在Internet Explorer中,一个元素要么自己对自身的内容进行计算 ...