热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

linux-链接文件-软链接和硬链接

linux系统中的链接文件类似于windows中的快捷方式,windows下的快捷方式就是一个存储路径的文件。在linux系统,链接文件分为两种:软链接和硬链接。linux中

linux系统中的链接文件类似于windows中的快捷方式,windows下的快捷方式就是一个存储路径的文件。在linux系统,链接文件分为两种:软链接和硬链接。

linux中创建链接的命令ln,格式如下:

ln [选项] 源文件 目标文件

当ln命令的选项是缺省的时候,系统会自动创建一个硬链接;选项是-s时,则会创建软链接.上面的第一个参数是被链接的文件(也就是源文件的路径),第二个参数就是链接的文件(链接文件的路径).

软链接

在使用ln -s进行软链接操作时,系统会自动创建一个新的文件.下面提到的inode,也是就软链接和硬链接不同的地方所在.每当系统创建一个文件的时候,会从inode表中获取一个空闲的inode分配给新的文件.也就是说,只有文件被分配一个未被占用的inode时,这个文件才是新创建的文件.软链接文件就是一个新的文件,在执行ln -s时,目标文件会获取一个独享的inode.

在Documents文件夹下创建文件test.txt,通过ln -s创建软链接文件test_link.

lee@lee-pc:~/Documents$ ll
total 12
drwxr-xr-x  2 lee lee 4096 519 11:18 ./
drwxr-xr-x 22 lee lee 4096 519 11:17 ../
-rw-r--r--  1 lee lee   45 519 11:17 test.txt

lee@lee-pc:~/Documents$ ln -s test.txt ./test_link
lee@lee-pc:~/Documents$ ll
total 12
drwxr-xr-x  2 lee lee 4096 519 11:19 ./
drwxr-xr-x 22 lee lee 4096 519 11:17 ../
lrwxrwxrwx  1 lee lee    8 519 11:19 test_link -> test.txt
-rw-r--r--  1 lee lee   45 519 11:17 test.txt

观察以上信息发现,软链接文件的大小为8字节,且软链接文件名后的新头->指向的源文件的路径名test.txt.文件的大小代表文件数据块中存储的数提的大小.事实上,软链接文件中存储的数据就是源文件的路径名.当访问软链接文件时,系统会从它的数据块中获取源文件的路径,再到这个路径中访间源文件。

硬链接

创建硬链接文件时,系统并不会去查找inode表,而是在硬链接文件上级目录的dentry中添加一条记录。

lee@lee-pc:~/Documents$ ln -s test.txt ./test_link
lee@lee-pc:~/Documents$ ll
total 16
drwxr-xr-x  2 lee lee 4096 519 12:44 ./
drwxr-xr-x 22 lee lee 4096 519 12:44 ../
-rw-r--r--  2 lee lee   46 519 11:23 test
-rw-r--r--  2 lee lee   46 519 11:23 test.txt

相对来说,软链接文件与Windows系统中的快捷方式更为相似,无论被链接的文件有多大,软链接的数据都只是被链接文件的文件名;而硬链接文件虽然也是链接文件,但当使用ls命令查看该文件的属性信息时,除文件名外,该文件的属性信息与源文件信息完全相同。

注意事项

创建链接文件是需要注意以往几点:

  • 创建硬链接文件时,源路径中的对象不能是一个目录,因为硬链接文件与源文件的inode相同,若创建的硬链接文件包含在源文件目录中,则会产生循环访问;软链接的inode与源文件不同,不受此限制。

  • 磁盘分区中的inode表是文件系统级别的,硬链接文件与源文件的inode相同,因此为文件创建硬链接时,硬链接文件可以在同一文件系统的不同目录中,但不能跨文件系统;而软链接文件与源文件的inode不同,因此软链接文件可以跨文件系统。

  • 在创建硬链接文件时,文件的硬链接数会加1(可使用ls -l命令查看),若执行删除操作,只有在硬链接数为1时该文件才会真正被删除,其他时候只是删除文件路径目录项中的记录并使文件硬链接数减1;创建软链接时不会增加被链接文件的链接次数。

  • Linux系统中文件类型之一的符号链接文件只包含软链接文件,硬链接文件本质上是Linux系统中的普通文件。


推荐阅读
  • 本文详细介绍如何在 Windows 环境下安装 Ubuntu 12.04 版本的 Linux 操作系统,包括必要的软件下载、配置步骤以及注意事项。 ... [详细]
  • 随着技术社区的发展,越来越多的技术爱好者选择通过撰写博客来分享自己的学习经验和项目进展。本文将介绍一个具体案例,即将一套原本运行于Windows平台的代码成功移植到Linux(Redhat)环境下的过程与挑战。 ... [详细]
  • 本文详细介绍了在Linux环境下如何有效地管理任务,包括撤销操作、挂起与恢复任务、终止后台程序以及取消定时任务的方法。这些技巧对于提高日常工作效率和系统维护至关重要。 ... [详细]
  • Ubuntu GamePack:专为游戏爱好者打造的Linux发行版
    随着Linux系统在游戏领域的应用越来越广泛,许多Linux用户开始寻求在自己的系统上畅玩游戏的方法。UALinux,一家致力于推广GNU/Linux使用的乌克兰公司,推出了基于Ubuntu 16.04的Ubuntu GamePack,旨在为Linux用户提供一个游戏友好型的操作环境。 ... [详细]
  • 众包(Crowdsourcing)是指将任务分发给广泛的社区成员完成,而非由组织内部人员独力承担。这一模式在软件测试领域尤为突出,通过结合网络与云计算技术,形成了强大的众包测试机制,对传统测试流程产生了深远影响。 ... [详细]
  • OBS (Open Broadcaster Software) 架构解析
    本文介绍 OBS(Open Broadcaster Software),一款专为直播设计的开源软件。文章将详细探讨其技术架构、核心组件及其开发环境要求。 ... [详细]
  • WinSCP: 跨Windows与Linux系统的高效文件传输解决方案
    本文详细介绍了一款名为WinSCP的开源图形化SFTP客户端,该工具支持SSH协议,适用于Windows操作系统,能够实现与Linux系统之间的文件传输。对于从事嵌入式开发的技术人员来说,掌握WinSCP的使用方法将极大提高工作效率。 ... [详细]
  • 在Linux系统上构建Web服务器的详细步骤
    本文详细介绍了如何在Linux系统上搭建Web服务器的过程,包括安装Apache、PHP和MySQL等关键组件,以及遇到的一些常见问题及其解决方案。 ... [详细]
  • 本文将详细介绍如何在ThinkPHP6框架中实现多数据库的部署,包括读写分离的策略,以及如何通过负载均衡和MySQL同步技术优化数据库性能。 ... [详细]
  • 应对.avast后缀勒索病毒:全面指南
    本文详细介绍了.avast后缀勒索病毒的特性、感染途径、恢复方法及预防措施,旨在帮助用户有效应对这一威胁。 ... [详细]
  • NFS(Network File System)即网络文件系统,是一种分布式文件系统协议,主要用于Unix和类Unix系统之间的文件共享。本文详细介绍NFS的配置文件/etc/exports和相关服务配置,帮助读者理解如何在Linux环境中配置NFS客户端。 ... [详细]
  • win10个性化打不开如何解决
    本篇内容主要讲解“win10个性化打不开如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“win ... [详细]
  • 本文介绍如何在Linux系统中卸载预装的OpenJDK,安装指定版本的JDK 1.8,并配置防火墙以确保系统安全性和软件兼容性。 ... [详细]
  • EasyMock实战指南
    本文介绍了如何使用EasyMock进行单元测试,特别是当测试对象的合作者依赖于外部资源或尚未实现时。通过具体的示例,展示了EasyMock在模拟对象行为方面的强大功能。 ... [详细]
  • 本文详细介绍了在使用Socket进行网络编程时,遇到链接器错误`undefined reference to WSAStartup@8`的解决方案,适用于多种开发环境。 ... [详细]
author-avatar
去奥迪店买本驰
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有