linux软硬链接区别

简介:

(1)硬链接  

       

        一般情况下,文件名和inode号码是"一一对应"关系,每个inode号码对应一个文件名。但是,Unix/Linux系统允许,多个文件名指向同一个 inode号码。这意味着,可以用不同的文件名访问同样的内容;对文件内容进行修改,会影响到所有文件名;但是,删除一个文件名,不影响另一个文件名的访 问。这种情况就被称为"硬链接"(hard link)。

      硬链接必须在一个分区,两个文件互为源,命硬,删掉一个还有一个。多个文件共享一个inode。是为了节省inode资源。这多个文件的内容是同步的

       硬链接可以认为不是一个文件,它只是实际文件的一个别名,它的作用是防止真实文件被误操作,给一个文件建立硬链接后,他们互为别名,删除其中任一个,只 会删除该别名,实际文件并不会被删除。由于只是别名没有任何其他信息,所以并不占用原始文件大小的磁盘空间。

wKiom1fGX3DgDaNgAAA-eOlP8aE191.jpg-wh_50

             硬链接举例如下:

wKioL1fGYTXRlGSFAAB17fEKxWY876.png


(2)软链接  

      可以不在一个分区,只有一个最本质的源文件。删掉源另一个也就失效了。两个文件的inode号是不同的。源文件有100M 链接文件可能只有几十K。链接文件只是访问源文件的一个跳板。

       软链接文件有点类似于Windows的快捷方式。它实际上是特殊文件的一种。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

      软链接是另一个文件,作用可以理解为一个指针,作用在这个文件上的操作除了删除都直接转向实际指向文件,由于是一个真实的文件所以占用磁盘空间 。

    

wKioL1fGX4rA9LrOAABnYBQeA6E510.jpg-wh_50

       软链接举例如下:

wKiom1fGYZXD2JpsAAB7rfrgqSY636.png


  (3) ln 命令

      用来链接文件或目录。当同时指定多个文件或目录时,目的目录必须存在,若不存在则出错,若存在,指定多个文件和目录将被复制的目录下。当不指定参数默认创建硬链接。创建的链接分为两种:硬链接和软链接;硬链接相当于创建副本;软链接只是单纯的链接

     
       -b  删除,覆盖以前建立的链接
       -d  允许超级用户制作目录的硬链接
       -f   强制执行
       -i   交互模式,文件存在则提示用户是否覆盖
       -n  把符号链接视为一般目录
       -s  软链接(符号链接)
       -v  显示详细的处理过程


总结:
软链接:

1.软连接,以路径的形式存在。类似于Windows操作系统中的快捷方式
2.软连接可以 跨文件系统 ,硬连接不可以
3.软连接可以对一个不存在的文件名进行连接
4.软连接可以对目录进行连接

5.软链接节省空间资源


 硬链接
1.硬链接,以文件副本的形式存在。但不占用实际空间。
2.硬链接普通用户不可以对目录进行链接,超级用户可以
3.硬链接只有在同一个文件系统中才能创建

4硬链接节省Inode资源。

 

本节多次提到inode概念,我将在下节博客中做详细解释


本文转自willis_sun 51CTO博客,原文链接:http://blog.51cto.com/willis/1844708,如需转载请自行联系原作者


相关文章
|
Linux 索引
在Linux中,符号链接与硬链接有何区别?
在Linux中,符号链接与硬链接有何区别?
|
网络协议 Ubuntu Linux
查询Linux中网络链接的状态:networkctl
【7月更文挑战第18天】
842 0
查询Linux中网络链接的状态:networkctl
|
存储 Linux Windows
【Linux】文件系统软硬链接的那些事儿
本文介绍了Linux文件系统的磁盘结构、逻辑结构以及文件和inode的关系,重点讲解了软链接和硬链接的区别,强调了它们在文件管理中的作用。
337 7
|
Linux 数据处理
探索Linux下的readlink命令:解析符号链接的利器
`readlink`命令在Linux中用于揭示符号链接的指向,显示它们所链接的实际文件或目录的路径。它可以显示简洁的绝对路径(-f),处理循环链接(-e),或不加换行符输出(-n)。例如,查看`link.txt`指向:`readlink link.txt`;获取绝对路径:`readlink -f link.txt`。使用时要注意链接是否存在、权限问题和可能的循环链接。
|
Linux vr&ar C语言
Linux怎样更新Centos下Gcc版本支持C17?Centos7快速安装gcc8.3.1 可支持C++17(附gcc相关链接整理)
Linux怎样更新Centos下Gcc版本支持C17?Centos7快速安装gcc8.3.1 可支持C++17(附gcc相关链接整理)
1948 2
|
Shell Linux 网络安全
Linux怎样在使用ssh 链接时就指定gcc 的版本
Linux怎样在使用ssh 链接时就指定gcc 的版本
290 7
|
数据可视化 网络协议 Linux
Linux 怎样通过win 远程桌面连接链接Linux后台服务器的可视化图形界面
Linux 怎样通过win 远程桌面连接链接Linux后台服务器的可视化图形界面
610 0
|
Linux 编译器 数据处理
深入了解Linux命令ld.gold:快速链接器的奥秘
`ld.gold`是GNU的快速链接器,设计用于加速大型项目的链接,尤其擅长并行处理和增量链接。它与标准的`ld`高度兼容,可通过`-fuse-ld=gold`选项启用。例如,`gcc -o my_program file1.c file2.c file3.c -Wl,--ld-as-needed -fuse-ld=gold`命令使用`ld.gold`链接多个源文件。最佳实践包括确保环境支持、利用多线程和启用增量链接。
|
Linux 数据处理 开发者
Linux命令ld.bfd:二进制文件的强大链接器
`ld.bfd`是GNU链接器的变体,利用BFD库处理多种目标文件格式(如ELF, COFF)。它收集文件,解析符号,执行重定位,生成可执行文件。特点包括多格式支持,高效符号管理和诊断信息。常用命令如`ld.bfd -o output file1.o file2.o -lc`。注意文件路径、链接顺序,利用诊断信息和文档,保持工具更新以优化使用。
|
Linux 编译器 数据处理
探索Linux中的`ld`命令:链接器的奥秘
`ld`是Linux的链接器,集成在GNU Binutils中,将.o文件与库合并成可执行或共享库。它处理符号引用、重定位,支持多种文件格式及静态/动态链接。常用参数包括-o指定输出,-l和-L添加库和搜索路径。通常通过编译器驱动程序如gcc调用以简化链接过程。理解符号解析、选择静态/动态链接及管理库版本是使用ld的关键。使用--verbose选项有助于调试。