硬链接和软链接文件

1、硬链接文件

硬链接是指通过索引节点(inode)来进行链接。在linux(ext2、ext3、ext4)文件系统中,保存在磁盘分区中的文件不管是什么类型的都会给他分配一个编号,这个标号被称为inode节点标号,即文件在系统中的编号。

在linux文件系统中,多个文件名指向同一个索引节点(inode)是正常并且允许的,这种情况的文件就被称为硬链接。提示:硬链接文件就相当于文件的另外一个入口。硬链接的作用是允许一个文件拥有多个有效路径名(多个入口),这样用户就可建立硬链接到重要的文件,以防止“误删”源数据,(很多硬件存储,如:netapp存储中的快照功能就是应用了这个原理,增加了一个快照就多了一个硬链接。)

为什么一个文件建立了硬链接文件就会防止删除数据呢?

因为文件系统(ext2)的原理是:只要文件的索引节点(inodex code)还有一个以上的硬链接,只删除其中一个硬链接(即:仅仅删除了该文件的连接指向)并不影响索引节点本身和其他链接(即文件实体并未删除),只有当文件的最后一个连接被删除后,此时如果有新数据要存储到硬盘上或者通过类似fsck做磁盘检测的时候才会被删除。

硬链接小结:

(1)具有相同的inode节点号的多个文件时互为硬链接文件

(2)删除硬链接文件或者删除源文件任意之一,文件实体并未删除

(3)只有删除了源文件及所有对应的硬链接文件,文件的实体才会被删除

(4)当所有的硬链接文件及源文件被删除后,在存放新的数据会占用这个文件的空间,或者磁盘FCSK检查的时候,删除的数据也会被系统回收

(5)硬链接文件就是文件的另一个入口(相当于超市的前门、后门一样)

(6)通过给文件设置硬链接文件,来防止删除重要文件被误删除

(7)通过执行命令“ln 源文件 硬链接文件” ,即可以完成创建硬链接

(8)硬链接文件可以用rm命令删除

(9)对于静态文件(没有进程正在调用的文件)来讲,当赌赢硬链接数为0(i_link),文件就被删除了。i_link的查看方法(ls –l 结果的第三列就是)

硬链接实例:

[[email protected] ~]# cat oldboy.txt
I am studying linux.
[[email protected] ~]# ln oldboy.txt oldboy_hard_link
[[email protected] ~]# ls -lhi old*
392964 -rw-r--r--. 2 root root 21 Mar 13 04:52oldboy_hard_link        #两个文件节点号相同
392964 -rw-r--r--. 2 root root 21 Mar 13 04:52oldboy.txt
[[email protected] ~]# rm -rf oldboy.txt
[[email protected] ~]# cat oldboy_hard_link
I am studying linux.

2、软链接文件

软连接(soft link)也成为符号链接(Symbolic link)。linux 里的软链接文件就类似于windows系统中的快捷方式。linux里的软链接文件实际上是一个特殊的文件,文件类型是l。 软连接指向另一源文件的位置信息内容,因此通过访问这个“快捷方式”就可以迅速定位到软连接所指向的源文件实体。

软连接小结:

1)软连接类似windows快捷方式(可以通过readlink查看其指向)

2)软连接类似一个文本文件,里边存放的是源文件的路径,指向源文件实体

3)删除源文件,软连接文件依然存在,但是无法访问指向的源文件路径内容

4)失效的时候一般是白字红底闪烁提示

5)执行“ln –s 源文件 软连接文件”,即可完成创建软连接(目标不能存在)

6)软链接和源文件是不同类型的文件,也是不通的文件,inode号也不相同

7)删除软链接文件可以用rm命令

软连接实例:

[[email protected] ~]# cat oldboy.txt
I am studying linux.
[[email protected] ~]# ln -s oldboy.txt oldboy_soft_link
[[email protected] ~]# ls -hil oldboy*
399710 lrwxrwxrwx. 1 root root 10 Mar 13 04:55oldboy_soft_link -> oldboy.txt
392964 -rw-r--r--. 1 root root 21 Mar 13 04:54oldboy.txt
[[email protected] ~]# rm -f oldboy.txt
[[email protected] ~]# cat oldboy_soft_link
cat: oldboy_soft_link: No such file or directory

3、图示软链接和硬链接原理

4、目录链接小结:

(1)对于目录不可创建硬链接,但是可以创建软连接

(2)对于目录的软链接是生产场景运维中的常用技巧(例如apache应用)

(3)目录的硬链接不能跨越文件系统(硬链接的原理可以理解)

(4)每个目录下边都有一个硬链接“.”号,和相对应上级目录的硬链接“..”

(5)在父目录里创建一个子目录,父目录的硬连接数增加1(每个子目录里都有..来指向父目录)

但是在父目录里创建文件,父目录的链接数不会增加

5、系统删除文件原理

一个文件被删除必须满足的条件:

静态文件:

i_link和i_count的数为0的时候才可以删除文件

动态文件(被其他进程调用的文件):

i_link和i_count的数为0的时候并且需要重新启动调用的进程开可以删除文件

原理可以总结成如下图所示:

结论:

当系统文件存在硬链接文件的时候,删除源文件后,硬链接不失效,可以通过硬链接继续放问源文件;当系统文件存在软链接文件的时候,删除源文件后,软链接失效,无法通过软链接文件访问源文件。

时间: 2024-12-09 01:55:06

硬链接和软链接文件的相关文章

浅析Linux文件(一)inode与block、硬链接与软链接、恢复误删文件

一.inode与block 1.inode和block概述 文件数据包括元信息与实际数据,一个文件必须占用一个inode,但至少占用一个block. 扇区:文件存储在硬盘上,硬盘的最小存储单位是扇区,每个扇区存储空间是512字节.block(块):连续的八个扇区组成一个block,block是文件存取的最小单位,用来存储文件数据.inode(索引节点):也叫i节点,用于存储文件元信息. 2.inode的理解 (1)inode包含文件元信息: 文件的字节数 文件拥有者的User ID(UID) 文

Linux硬链接、软链接的创建及两者的区别

一.硬链接 链接数就是名字的数量: ln(link) 硬链接,多个相同的inode文件(同分区),多个硬链接文件的存在在硬盘上只占用一个文件的容量. 创建的硬链接是平等的,inode相同,删除某一个互不影响,其他文件仍然可以使用. 硬链接的本质:给一个文件创建多个名字. 创建多个硬链接,观察链接数的变化(+1),链接数是几就是有几个文件名. 同一分区中,同一个inode号必定是一个文件. 原始的文件 [[email protected] testdir]# ll -iman.txt 15 -rw

硬链接与软链接的缠绵

Preface: 本文以站在不懂到懂的角度,知识开始理解有错误,但慢慢进阶,最后豁然开朗.要点评先看完再说. Basic_Knowledge: 在linux下有硬链接和软链接两种,硬链接为文件的别名,它和软链接一样,都指向文件,但是硬链接不是一个文件. linux下判定是不是一个独立文件看的就是其inode是不是独一无二的,ls -l 一下,如果链接数是1,那么这肯定是一个文件. 命令:ex > ln      test     f_h     ||       cp     -l    tes

linux中的硬链接和软链接

一.ln命令概述 它的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间. 二.硬链接和软链接的区别 硬链接:是通过文件系统的inode连接来产生新的文件名,而不是产生新文件 软链接:类似Windows的快捷方式功能的文件,可以让你快速连接到目标文件(或目录) 三.硬链接 语法:ln

实例讲解Linux系统中硬链接与软链接的创建

导读 Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).默认情况下,ln命令产生硬链接.硬链接与软链接的区别从根本上要从Inode节点说起,下面就以实例讲解Linux系统中硬链接与软链接的创建,来实际看看Linux中两种链接方式的不同. 首先要弄清楚,在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号.文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存在,从而实现

RHCE系列之文件管理----硬链接和软链接

Linux 文件系统最重要的特点之一是它的文件链接. 链接是对文件的引用,这样你可以让文件在文件系统中多处被看到. 在 Linux 中,链接可以如同原始文件一样来对待.链接可以与普通的文件一样被执行.编辑和访问.对系统中的其它应用程序而言,链接就是它所对应的原始文件.当你通过链接对文件进行编辑时,你编辑的实际上就是原始文件.切记,链接并不是文件的副本. 在linux系统中,链接可分为两类:一类被称为硬链接(Hard Link),另一类被称为软链接或符号链接(Symbolic Link). 硬链接

Linux硬链接和软链接

1.硬链接:文件别名通过前面讲的Linux ext2文件系统,我们知道在目录文件的block中,存放着目录下文件的文件名和对应的inode.可以将多个文件名对应到同一个inode,新建一条文件名链接到某inode号,这就是硬链接. 可以看出,硬链接只是新建了一个文件名,关联到一个已存在的文件.此时,目录下的block多写了一个文件名/inode的数据所以,硬链接没有增加inode和block的耗用. 2.软链接:类似windows中的快捷方式软链接的实质是,创建了一个独立的文件,而读取这个文件时

linux下硬链接和软链接

[硬链接] 硬链接是指通过索引节点进行链接,太复杂了看操作吧. 硬链接的创建 [[email protected] ~]# mkdir -p /test/oldboy/   创建一个目录 oldboy/ [[email protected] ~]# cd /test/oldboy/             切换到这个目录中来 [[email protected] oldboy]# touch oldboyfile     #创建一个测试文件 制作硬链接 [[email protected] ol

硬链接和软链接的区别

# 硬链接和软链接的区别## 1.概念 在linux中,链接可分为两种:一种为硬链接,另一种为软链接. 硬链接:ln 源文件 目标文件软链接:ln -s(soft)源文件 目标文件### 硬链接 硬链接是指通过索引节点inode来进行链接.linux系统中每个文件对应一个inode,并且允许多个文件名指向用一个inode.这种情况的文件就成为硬链接. 它的作用之一就是允许一个文件拥有多个入口,防止重要数据误删. 硬链接的原理: ### 软链接 软链接也称为符号链接,相当于windows中的快捷方