`
zengshaotao
  • 浏览: 792121 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

linux软硬链接

 
阅读更多
在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号。文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存在,从而实现文件的快速访问。

链接是一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法。Linux中包括两种链接:硬链接(Hard Link)和软链接(Soft Link),软链接又称为符号链接(Symbolic link)。符号连接相当于Windows下的快捷方式。

一、硬链接

硬链接说白了是一个指针,指向文件索引节点,系统并不为它重新分配inode。可以用:ln命令来建立硬链接。
语法:
ln [options] existingfile newfile(existingfile 待建立链接文件的文件,newfile是新创建的链接文件)
ln [options] existingfile-list directory

-f 建立时,将同档案名删除.
-i 删除前进行询问.

ln abc cde 建立abc的硬连接,

用法:
第一种:为”existingfile”创建硬链接,文件名为”newfile”。
第二种:在”directory”目录中,为”existingfile-list”中包含的所有文件创建一个同名的硬链接。
常用可选[options] –f 无论”newfile”存在与否,都创建链接。-n 如果”newfile”已存在,就不创建链接。

下面举一些例子:

[root@rekfan.com test]# ls -il
总计 0
1491138 -rw-r–r– 1 root root 48 07-14 14:17 file1
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2
[root@rekfan.com test]# ln file2 file2hand
[root@rekfan.com test]# ls -il
总计 0
1491138 -rw-r–r– 1 root root 48 07-14 14:17 file1
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand
[root@rekfan.com test]#

注意在创建链接前,file1 显示的链接数目为1,创建链接后file1和file1hard的链接数目都变为2;file1和file1hard在inode号是一样的file1和file1hard显示的文件大小也是一样。可见进行了ln命令的操作结果:file1和file1hard是同一个文件的两个名字,它们具有同样的索引节点号和文件属性,建立文件file1的硬链接,就是为file1的文件索引节点在当前目录上建立一个新指针。你可以删除其中任何一个,如rm file2 ,每次只会删除一个指针,链接数同时减一,当链接数减为0时,内核才会把文件内容从磁盘上删除。

还可以在不同目录,但同一文件系统中建立文件的硬链接。设file1、file2在目录/home/root/dir1中,下面的命令,在/home/root中建立file2的硬链接。

ln file2 /home/root/file2hard
下面的程序,是将dir1目录中所有文件,在目录dir2中建立硬链接
#mkdir dir2
#ln /home/root/dir1/* /home/root/dir2

如果使用了 ln –f existingfile newfile,如果newfile已经存在,则无论原来newfile是什么文件,只用当前用户对它有写权限,newfile就成为exisitngfile的硬链接文件。

尽管硬链接节省空间,也是Linux系统整合文件系统的传统方式,但是存在一下不足之处:
(1)不可以在不同文件系统的文件间建立链接
(2)只有超级用户才可以为目录创建硬链接。

二、软链接(符号链接)

软链接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符号链接。因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件进行链接。
建立软链接,只要在ln后面加上选项 –s,下面举个例子

[root@rekfan.com test]# ls -il
总计 0
1491138 -rw-r–r– 1 root root 48 07-14 14:17 file1
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand

[root@rekfan.com test]# ln -s file1 file1soft
[root@rekfan.com test]# ls -il
总计 0
1491138 -rw-r–r– 1 root root 48 07-14 14:17 file1
1491140 lrwxrwxrwx 1 root root 5 07-14 14:24 file1soft -> file1
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand

从上面链接后的结果可以看出来软链接与硬链接,区别不仅仅是在概念上,在实现上也是不同的。区别:硬链接原文件&链接文件公用一个inode号,说明他们是同一个文件,而软链接原文件&链接文件拥有不同的inode号,表明他们是两个不同的文件;在文件属性上软链接明确写出了是链接文件,而硬链接没有写出来,因为在本质上硬链接文件和原文件是完全平等关系;链接数目是不一样的,软链接的链接数目不会增加;文件大小是不一样的,硬链接文件显示的大小是跟原文件是一样的,这用强调,因为是等同的嘛,而这里软链接显示的大小与原文件就不同了,file1大小是48B,而file1soft是5B,这里面的5实际上就是“file1”的大小。

总之,建立软链接就是建立了一个新文件。当访问链接文件时,系统就会发现他是个链接文件,它读取链接文件找到真正要访问的文件。
当然软链接也有硬链接没有的缺点,因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到了~~,而硬链接就没有这个缺陷,你想怎么移就怎么移(呵呵);还有它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径。

补充一下:可以通过symlink来查看链接文件,可以用 man symlink来学习。

三、删除链接

有创建就有删除

rm -rf symbolic_name 注意不是rm -rf symbolic_name/


[root@rekfan.com test]# ls -il
总计 0
1491138 -rw-r–r– 1 root root 0 07-14 14:17 file1
1491140 lrwxrwxrwx 1 root root 5 07-14 14:24 file1soft -> file1
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand
[root@rekfan.com test]# rm -rf file1soft
[root@rekfan.com test]# ls -il
总计 0
1491138 -rw-r–r– 1 root root 0 07-14 14:17 file1
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand
[root@rekfan.com test]#

————————————
linux 软连接和硬链接的区别:
————————————

4点不同 :
(1)软连接可以 跨文件系统 ,硬连接不可以 。
实践的方法就是用共享文件把windows下的 aa.txt文本文档连接到linux下/root目录 下 bb,cc . ln -s aa.txt
/root/bb 连接成功 。ln aa.txt /root/bb 失败 。

(3)软连接可以对一个不存在的文件名进行连接

(4)软连接可以对目录进行连接。硬链接不可以。

分享到:
评论

相关推荐

    Linux软连接和硬链接

    在Linux操作系统中,...文章《Linux软连接和硬链接》以及相关资料提供了深入的探讨,包括它们的工作原理、创建方法以及使用示例。通过阅读这些材料,你可以更全面地了解如何在Linux环境中有效地利用这两种链接技术。

    linux软链接 硬链接区别

    硬链接和软链接是 Linux 中两种不同的文件链接方式,硬链接通过索引节点来进行连接,而软链接是一种特殊的文件,包含的有另一文件的位置信息。了解硬链接和软链接的区别对 Linux 操作系统的使用和管理非常重要。

    Linux软连接和硬链接-实际操作一遍你就会懂

    Linux操作系统中,文件的链接是一种将文件的不同名称关联起来的技术,这种技术分为两种主要类型:硬链接(HardLink)和符号链接(SymbolicLink),也就是我们常说的软链接。通过实际操作演示,可以更直观地理解这两...

    Linux 软连接与硬链接.pdf

    Linux 软连接与硬链接 Linux 操作系统中有两种类型的连接:硬连接(Hard Link)和软连接(Symbolic Link)。这两种连接类型都可以实现文件的共享,但它们的实现机制和应用场景不同。 一、硬连接(Hard Link) 硬...

    Linux操作系统的硬链接与软链接讲解

    在Linux操作系统中,文件管理是核心功能之一,而硬链接和软链接是文件系统中非常重要的概念,它们提供了文件共享和访问的灵活方式。本文主要介绍这两种链接的区别和使用。 首先,每个文件在Linux中都有一个唯一的...

    自己动手打造嵌入式Linux软硬开发环境

    【嵌入式Linux软硬开发环境构建】 嵌入式Linux开发环境的构建是将Linux操作系统应用于嵌入式设备的关键步骤,这通常涉及到硬件选择、软件配置以及开发工具链的搭建。1991年,Linus Torvalds的Linux项目始于个人爱好...

    Linux实验三 软硬连接 压缩打包和解压

    "Linux 实验三 软硬连接 压缩打包和解压" 本实验主要涵盖 Linux 操作环境、文件和目录操作、find 命令的使用、文件链接和 tar 文件打包和压缩功能等知识点。 一、实验目的及要求 * 熟悉 Linux 操作环境 * 掌握 ...

    ln的软硬连接区别

    在Linux操作系统中,链接主要分为两类:硬链接(hard link)和软链接(又称为符号链接,symbolic link)。下面我们将从多个维度详细分析这两种链接的特点及其差异。 ### 软链接(Symbolic Link) 软链接在功能上...

    11.linux8.0-软硬链接.pdf

    本教程适用于Linux初学者,旨在详细解释软链接和硬链接的概念、特点以及如何创建这两种链接。 首先,软链接,也称为符号链接(Symbolic Link),其工作原理类似于Windows操作系统的快捷方式。但它们之间存在显著...

    详解linux软连接和硬链接

    本篇文章详细介绍了linux软连接和硬链接,废话不多说,接着往下看把。 一 链接文件 Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。 ...

    需要了解的linux硬链接与软链接.docx

    理解 Linux 硬链接与软链接 在 Linux 系统中,存在两种特殊的“文件”:硬链接和软链接。它们都是文件系统中的重要组成部分,具有不同的特点和应用场景。 硬链接是通过文件系统的 inode 产生新档名,而不是产生新...

    linux 硬链接和软链接深入理解.docx

    Linux 硬链接和软链接深入理解 Linux 操作系统中有两种类型的链接:硬链接和软链接。了解硬链接和软链接的区别和使用场景对于 Linux 系统管理员和开发者非常重要。 硬链接(Hard Link) 硬链接是一种文件系统中...

    Linux 硬链接与软链接

     Linux 中有两种链接:硬链接(Hard Link)和软链接(Soft Link),软链接也称为符号链接(Symbolic Link)。  硬链接  硬链接其实已存在文件的另一个名字,链接与原来的文件并没有什么区别

    zyl-fun#blog#Linux硬链接和软链接1

    Linux硬链接和软链接参考:

    Linux 基础 93-其他命令-06-文件软硬链接工作方式简介.flv

    Linux 基础 93-其他命令-06-文件软硬链接工作方式简介.flv

    软链接和硬链接

    ### Linux中的软链接与硬链接详解 #### 一、引言 在Linux系统中,链接是一种非常实用且常见的文件管理方式。它可以帮助用户更高效地组织文件系统,并提高存储空间的利用率。链接有两种类型:硬链接(Hard Link)和...

    Linux系统中“软链接”和“硬链接”的区别.doc

    链接是Linux中一种重要的文件共享和管理机制,分为软链接(也称为符号链接)和硬链接。它们都是提供了一种指向文件数据块的不同路径,但实现方式和特性有所不同。 硬链接类似于文件的多个别名,每个链接都有相同的...

    软链接与硬链接

    ### 软链接与硬链接 ...通过深入理解硬链接和软链接的差异,我们可以更加灵活地使用这些功能来提高Linux系统的操作效率和安全性。希望本文能够帮助大家告别对链接机制的模糊认识,真正掌握其核心原理。

Global site tag (gtag.js) - Google Analytics