Linux 链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。

硬链接和软链接

硬链接 --- ln 要链接的文件 新硬链接名

软连接 --- ln -s 要链接的文件 新软链接名

# 硬链接 删除 f1, f2依然有效, 直到把所有相关连的硬链接都删除, 文件才会删除
ln f1 f2
# 软链接 删除 f1, f2就无效了
ln -s f1 f2

硬链接

# 语法: ln 要链接的文件 生成的硬链接名
# 创建f1的一个硬连接文件f2
ln f1 f2
  • 硬链接是指通过索引节点来连接的, 在Linux文件系统中, 保存在磁盘中文件都会给它分配一个编号, 这个称之为索引节点号(Inode Index)。在Linux中存在多个文件名指向同一索引节点。比如:A是B的硬链接, 那么A和B就都指向同一索引节点, 删除A并不会影响B。

测试

[root@VM-0-5-centos test]# echo "Hello,World" >> F1   #先在 F1 中写入 "Hello,World"
[root@VM-0-5-centos test]# ls #查看, 可以看到 F1 文件
F1
[root@VM-0-5-centos test]# cat F1 # 查看 F1 的内容, 可以看到是 Hello,World
Hello,World
[root@VM-0-5-centos test]# ln F1 F2 # 创建F1的一个硬连接文件F2
[root@VM-0-5-centos test]# ls -li # 查看 inode 节点相同,均为 1180919
1180919 -rw-r--r-- 2 root root 12 Oct 22 17:45 F1
1180919 -rw-r--r-- 2 root root 12 Oct 22 17:45 F2
[root@VM-0-5-centos test]# cat F2 # 查看 F2 的内容, 和F1一样
Hello,World
[root@VM-0-5-centos test]# echo "改变F2" >> F2 # 往F2 追加内容 "改变F2"
[root@VM-0-5-centos test]# cat F2 # 查看 F2
Hello,World
改变F2
[root@VM-0-5-centos test]# cat F1 # 查看 F1, 可以发现 F1 也改变了
Hello,World
改变F2
[root@VM-0-5-centos test]# rm -rf F1 # 删除 F1
[root@VM-0-5-centos test]# cat F2 # F2 依旧不受影响
Hello,World
改变F2

软链接

# 语法: ln -s 要链接的文件 生成软链接文件名
# 创建f1的一个符号连接文件f2
ln -s f1 f2
  • 符号连接(Symbolic Link),也叫软连接。软链接文件有类似于 Windows 的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。比如:A 是 B 的软链接(A 和 B 都是文件名),A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号不相同,A 和 B 指向的是两个不同的 inode,继而指向两块不同的数据块。但是 A 的数据块中存放的只是 B 的路径名(可以根据这个找到 B 的目录项)。A 和 B 之间是“主从”关系,如果 B 被删除了,A 仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。
[root@centos home]# touch f1 # 创建一个测试文件f1;
[root@centos home]# ls
f1
[root@centos home]# ln -s f1 f3 # 创建f1的一个符号连接文件f3;
[root@centos home]# ls -li # -i参数显示文件的inode节点信息;
397247 -rw-r--r-- 2 root root 0 Mar 13 00:50 f1
397248 lrwxrwxrwx 1 root root 2 Mar 13 00:50 f3 -> f1
[root@centos home]# rm -f f1 # 删除原文件f1,导致符号连接f3失效;
[root@centos home]# cat f3
cat: f3: No such file or directory

结论

  • 删除原文件,对硬连接没有影响,符号连接则会失效;
  • 同时删除原文件 ,和硬连接,整个文件会真正的被删除。

Linux 中软链接和硬链接的使用的更多相关文章

  1. linux中软链接和硬链接的区别与小结

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

  2. [转帖]Linux 下软链接和硬链接的区别

    Linux 下软链接和硬链接的区别 http://os.51cto.com/art/201911/605267.htm 软连接 文件是小的 只是一个链接 删除和其他处理不影响 原始文件的计数 删除源文 ...

  3. Windows和Linux创建软链接和硬链接

    1.Wondows创建软链接和硬链接 mklink [/d] [/h] link target /d--创建目录软链接:默认为文件软链接:创建目录链接时必须使用该选项不然创出的软链接无效 /h--创建 ...

  4. Linux之软链接与硬链接

    什么是链接? 链接简单说实际上是一种文件共享的方式,是 POSIX 中的概念,主流文件系统都支持链接文件. 它是用来干什么的? 你可以将链接简单地理解为 Windows 中常见的快捷方式(或是 OS ...

  5. linux下软链接与硬链接及其区别

    linux下创建链接命令 ln -s 软链接 这是linux中一个非常重要命令,请大家一定要熟悉.它的功能是为某一个文件在另外一个位置建立一个不同的链接,这个命令最常用的参数是-s, 具体用法是:ln ...

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

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

  7. linux中软连接和硬链接的区别

    linux中创建软连接和硬链接的方法: 软连接: ln -s oldfile slink 硬连接: ln oldfile hlink linux中创建软连接和硬链接的区别:        原理上,硬链 ...

  8. linux文件软链接与硬链接

    1.命令格式: ln [参数][源文件或目录][目标文件或目录] 软链接只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间. 2.命令功能: Linux文件系统中,有所谓的链接(link),我们 ...

  9. Linux下软链接与硬链接的区别

    由于下面会说到inode,所以如果没有了解过,请务必搞懂inode的真正含义,厚颜无耻的推荐我的一篇博客:Linux磁盘与文件系统管理 如果我们在系统中新建一个文件,我们看到的文件名实际上只是表面现象 ...

随机推荐

  1. proxySQL with MGR

    环境信息 hostname IP port role comm ms81 192.168.188.81 3399 master ms82 192.168.188.82 3399 slave ms83 ...

  2. mysql全备、增量备份脚本

     1.mysql全量备份及定时删除备份文件脚本 #!/bin/bash v_user="root" v_password="mysql" backup_date ...

  3. oracle DG搭建

    Oracle DG 搭建1. 环境 OS IP hostname db_name DB_UNIQUE_NAME主库 RHEL 5.4 192.168.12.20 edgzrip1.oracle.com ...

  4. 【Electron Playground 系列】窗口篇

    作者:Kurosaki 本文主要讲解Electron 窗口的 API 和一些在开发之中遇到的问题. 官方文档 虽然比较全面,但是要想开发一个商用级别的桌面应用必须对整个 Electron API  有 ...

  5. 深入浅出java的Map

    HashMap的组成 首先了解数组和链表两个数据结构 1.数组 寻址容易,插入和删除元素困难 数组由于是紧凑连续存储,可以随机访问,通过索引快速找到对应元素,而且相对节约存储空间. 但正因为连续存储, ...

  6. java中对象的简单解读

    对象=属性(int double之类都是变量的属性)+方法(想要实现内容,所做的一套算法) 属性=变量的所有数据 方法(c语言中叫做函数)=算法 总而言之 对象就是  给他所需要的的数据-->& ...

  7. 容器编排系统之Pod生命周期、健康/就绪状态探测以及资源限制

    前文我们了解了在k8s上的资源标签.标签选择器以及资源注解相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14141080.html:今天我们来聊下k8 ...

  8. .NET生态系统掠影

    如果你是一名开发人员,想要进入到.NET的世界,你需要知道都有哪些可能.由于.NET Framework是..NET生态系统中最流行的技术,你可以用它来构建各种各样的应用程序,但是最近,出现了一些新的 ...

  9. 深入理解MySQL系列之索引

    索引 查找一条数据的过程 先看下InnoDB的逻辑存储结构: 表空间:可以看做是InnoDB存储引擎逻辑结构的最高层,所有的数据都存放在表空间中.默认有个共享表空间ibdata1.如果启用innodb ...

  10. 实现JavaScript继承

    使用TypeScript或者ES2015+标准中的extends关键字是很容易实现继承的,但这不是本文的重点.JS使用了基于原型(prototype-based)的继承方式,extends只是语法糖, ...