`
cq520
  • 浏览: 166610 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

linux下创建和删除软、硬链接(转)

阅读更多

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

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

一、硬链接

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

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

ln -s abc cde 建立abc 的软连接
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 失败 。

(2)关于 I节点的问题 。硬连接不管有多少个,都指向的是同一个I节点,会把 结点连接数增加 ,只要结点的连接数不是 0,文件就一直存在 ,不管你删除的是

源文件还是 连接的文件 。只要有一个存在 ,文件就 存在 (其实也不分什么 源文件连接文件的 ,因为他们指向都是同一个 I节点)。 当你修改源文件或者连接文件

任何一个的时候 ,其他的 文件都会做同步的修改 。软链接不直接使用i节点号作为文件指针,而是使用文件路径名作为指针。所以 删除连接文件 对源文件无影响,但

是 删除 源文件,连接文件就会找不到要指向的文件 。软链接有自己的inode,并在磁盘上有一小片空间存放路径名.

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

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

备注:I节点 :它是UNIX内部用于描述文件特性的数据结构.我们通常称I节点为文件索引结点(信息结点).i节点 含有关于文件的大部分的重要信 息,包括文件数据块在

磁盘上的地址.每一个I节点有它自己的标志号,我们称为文件顺序号.I节点包含的信息 1.文件类型 2.文件属主关系 3.文件的访问权限 4.文件的时间截.

分享到:
评论

相关推荐

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

    2. 删除软链接不会影响目标文件,除非所有指向目标文件的链接(包括软链接和硬链接)都被删除。 3. 软链接可以指向任何类型的文件,包括目录,而硬链接通常不能对目录进行操作。 4. 普通用户可以创建软链接,包括...

    Linux软连接和硬链接

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

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

    1. 删除软链接f3不会影响原文件f1和硬链接f2的存在。 2. 删除硬链接f2对原文件f1和软链接f3也没有影响。 3. 删除原文件f1后,硬链接f2仍然能够访问到原文件的内容,但软链接f3则失效,无法访问到原文件。 4. 如果...

    Linux下创建和删除软、硬链接(ln)

    Linux中的链接主要分为硬链接和软链接,这两种链接有着各自的特点和应用场景。 硬链接,简单来说,是一个指向文件索引节点(Inode)的指针。当创建一个新的硬链接时,系统并不会为它分配新的Inode,而是共享原有的...

    linux软链接 硬链接区别

    Linux 软链接和硬链接的区别 Linux 链接概念是 Linux 操作系统中的一种文件系统机制,允许用户创建多个文件名指向同一个文件或目录。Linux 链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接...

    windows下创建软链接.大家都知道win有快捷方式,linux有软链接,但是你知道win也能创建软链接吗?

    6. `junction`是一个第三方工具,由Mark Russinovich开发,用于创建和管理NTFS文件系统的软链接和硬链接。虽然`mklink`命令已经足够完成大部分任务,但`junction`工具提供了更高级的功能,如批量创建、查看和删除...

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

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

    软链接和硬链接

    ### Linux中的软链接与硬链接详解 #### 一、引言 ...通过以上的实验和分析可以看出,硬链接和软链接在Linux中有着不同的应用场景和特点。理解它们的工作原理对于有效地管理和维护文件系统具有重要意义。

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

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

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

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

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

    在 Linux 系统中,硬链接和软链接都是重要的文件系统组成部分,它们可以帮助用户快速链接到目标档案或目录,但是它们也存在一些限制和不足之处,例如硬链接不允许给目录创建硬链接,不可以在不同文件系统的文件间...

    软链接与硬链接

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

    剖析Linux系统中硬链接与软链接的区别

    硬链接和软链接是Linux提供的一种特殊机制,允许用户以不同的方式访问同一文件内容。 **硬链接**: 硬链接实质上是文件系统的指针,指向同一个Inode。当创建一个硬链接时,系统不会为新链接分配新的Inode,而是增加...

    Linux硬链接与软链接原理及用法解析

    删除硬链接或软链接,使用`rm ln_file`,但要注意,如果删除的是目录软链接,使用`rm ln_dir`会删除软链接本身,而`rm ln_dir/`会删除软链接指向的目录及其内容(因为软链接是同步的)。 了解并熟练掌握硬链接和软...

    Linux入门之ln命令创建软链接的绝对路径和相对路径详解(Ubuntu)

    Linux链接,可以分为硬链接与软链接;本文主要介绍软链接。(默认情况下,ln命令产生硬链接) 软链接文件类似于Windows的快捷方式,但实际上是一个特殊的文件。在软连接中,文件实际上是一个文本文件,其中包含另一...

    ln的软硬连接区别

    综上所述,软链接和硬链接各有优势,适用于不同的场景。软链接提供了灵活性和便捷性,尤其适合于构建复杂的文件结构和跨分区引用;而硬链接则在保持数据一致性、节省磁盘空间和优化文件操作方面表现突出。理解并恰当...

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

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

    Linux 硬链接和软链接详细介绍

    软链接和硬链接 命令ln  ln是创建链接的命令:  创建硬链接:ln file link  创建软链接:ln -s file link 硬链接  硬链接(hard link)是Unix系统最早的创建链接的方式。  默认情况下每个文件都有一个硬链接,...

    浅析Linux下的链接文件.pdf

    【Linux链接文件详解】 ...例如,通过硬链接可以保护重要文件不被意外删除,而软链接则常用于简化路径,或者在不同目录之间创建快捷方式。理解这些概念有助于更有效地利用Linux系统资源并提高工作效率。

    区分Linux硬链接与软链接

    主要分为两种类型:硬链接(hard link)和软链接(soft link),也称作符号链接(symbolic link)。这两种链接方式各有特点,适用于不同的场景。 硬链接,顾名思义,是一种“硬性”的连接方式。它通过文件系统的...

Global site tag (gtag.js) - Google Analytics