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. python叠加矩形框图层

    两种方式以及效果: 方式一,使用PIL.Image.blend方式: from PIL import Image, ImageDraw im = Image.open('d:/tmp/58.249.0 ...

  2. 这个大学在Github开源了计算机课程,看完在家上个 985

    微信搜「后端技术学堂」有干货,本文已收录于Github:https://github.com/imcoderlemon/CodeClass 内含原创干货文章,千本计算机电子书,3本LeetCode题解 ...

  3. Oracle 要慌了!华为终于开源了自家的 Huawei JDK——毕昇 JDK!

    没错,自阿里.腾讯之后,华为也终于开源了自家的 JDK--毕昇 JDK! 免费!免费!免费!!! Oracle 要慌了? 毕昇 JDK 毕昇 JDK 是华为内部 OpenJDK 定制版 Huawei ...

  4. centos7 安装netstat命令工具

    [root@node01 yum.repos.d]# yum install -y net-tools Loaded plugins: fastestmirror Loading mirror spe ...

  5. html2canvas使用心得

    近两年做了几次微信H5活动的开发,为了达到传播分享的效果,通常最终都需要生成个性化的图片,供用户长按保存分享,在这里就把自己的一些使用心得记录下来,供其他小伙伴借鉴. 这里备注一下,我目前用的是  h ...

  6. PB级大规模Elasticsearch集群运维与调优实践【>>戳文章免费体验Elasticsearch服务30天】

    [活动]Elasticsearch Service免费体验馆>> Elasticsearch Service自建迁移特惠政策>>Elasticsearch Service新用户 ...

  7. js下 Day03、DOM操作--节点方法

    语法:parentNode.appendChild(child) 功能:向父节点的子节点列表的末尾添加新的子节点 语法:parentNode.removeChild(child) 功能:从子节点列表中 ...

  8. 最速下降法--MATLAB程序

    function x = fxsteep(f,e,a,b)x1 = a;x2 = b;Q = fxhesson(f,x1,x2);x0 = [x1,x2]';temp = [x0];fx1 = dif ...

  9. Winform程序及dll打包成一个可执行的exe

    使用场景 通常开发的Winform程序,引用了其他类库后,在输出目录下都会产生很多DLL文件,exe执行时必须依赖这些DLL.想要Winform程序只有一个可执行exe文件,又不想打包成安装包,就可以 ...

  10. asp.net webapi 给字段赋初始值DefaultValue 解决前端传空字符串后台接受不是“”而是NULL

    /// <summary> /// 存储ID /// </summary> public Guid SaveID { get; set; } /// <summary&g ...