软连接和硬链接的区别
软连接与硬连接的概念和区别
软连接与硬连接的概念和区别
软连接(SymbolicLink,简称slink)又称符号链接,是操作系统中的一种特殊的文件,它指向一个已存在的文件或目录。
它可以看作是某个文件或目录的一个快捷方式,或者说是给一个文件或目录起了一个别名。
硬链接(Hard Link,简称hlink)也是操作系统中的一种特殊文件,它与软连接的最大不同之处在于,硬链接指向的是文件或者目录的inode结构,而非文件或目录本身,可以把它看作是文件或目录自身的另一个名字。
二、区别
(1)软连接是一种特殊的文件,硬链接是针对文件或者目录另外设置的名称;
(2)软连接指向的是文件或目录本身,而硬连接则指向的是文件或目录的inode结构;
(3)软连接可以跨文件系统使用,而硬连接只能用于同一文件系统;
(4)软连接可以避免文件名冲突,而硬连接只能通过更改文件名来实现;
(5)软连接不会影响文件的大小和inode的链接数,而硬连接会增加此文件的inode的链接数。
- 1 -。
软链接和硬链接的用法
软链接和硬链接的用法
软链接和硬链接都是用来创建指向文件或目录的链接的。
它们的主要区别在于:
1. 软链接(Symbolic link或者symlink)是一个特殊的文件,
其内容是指向目标文件或目录的路径。
软链接类似于
Windows操作系统中的快捷方式,它不会复制或移动原始文
件或目录,只是提供了一个指向它们的引用。
如果原始文件或目录被删除或移动,软链接仍然存在但会失效。
软链接可以跨越文件系统。
2. 硬链接(Hard link)是一个直接指向目标文件或目录的链接。
与软链接不同,硬链接指向的是文件或目录的inode,而不是
路径。
硬链接在外观上与原始文件或目录没有区别,它们可以像原始文件一样访问和操作。
当删除原始文件或目录时,硬链接仍然存在,只有当所有链接都被删除后,文件或目录才会真正被删除。
硬链接只能在同一文件系统内创建。
软链接的主要用途包括:
- 创建文件或目录的备份副本;
- 在文件系统中的不同位置共享文件或目录;
- 创建指向系统库或依赖文件的指针。
硬链接的主要用途包括:
- 在文件系统中创建同一个文件的多个硬链接,以便在不同的
目录中使用相同的文件;
- 防止误删除文件,如果一个硬链接被删除,其他链接仍然有
效。
需要注意的是,符号链接和硬链接都不能跨越不同的计算机。
硬链接与软连接
Ln硬链接:ln 源文件新建名指向同一个文件,并独立存在。
当源文件删除不会影响硬链接文件的读取。
不能跨文件系统和目录建连接。
例:新建一个文件吧!名字test 硬链接为t1。
查看文件,发现2个文件最前的数字是一样的,而这一窜数字称之为inode。
Indoe包含了里面存储了此文件的属性,包括文件大小、所有者、以及访问权限等等。
所以2个inode相同很明显是一个文件(区别于软连接)。
还有权限后的数字,就代表了硬链接的份数。
每次对t1或test文件添加一个硬链接,数值在原有的基础上加1。
可以认为是备份数,但与备份区别的是,硬链接的每份都是有关联的,在任何一份硬链接上文件做修改,就会对每份硬链接做相同的改动。
软连接:In –s 源文件新建名相当于windows中的快捷方式依赖源文件。
如源文件删除,软连接则无法执行。
可以跨文件系统和目录建连接。
例:当我们挂在光驱时,常常会打入#mount /dev/cdrom /mnt/cdrom.但只要#mount,就会发现,其实挂载的并不是/dev/cdrom,而是/dev/hdc;这时你就可以想到了,可能是软连接的缘故,文件指向的是hdc注意权限,虽然软连接指向源文件,但并不会和源文件的权限相同。
一定会出现这问题,或许你会将软连接的权限改为700时。
并不代表只有文件所有者能访问。
一切还是要以源文件的权限为准。
(如果真要问我软连接的权限是干嘛用的,这个嘛。
再议。
)。
注意inode,并不是相同的,所以这就是和硬链接的本质区别。
总结硬链接不能跨文件系统和不能对目录创建,而软连接可以。
硬链接的inode是相同的,而软连接是不同的。
硬链接每新建一次,值就会在原有基础上加1。
而软连接则没此项。
不要被软连接的权限迷惑,最终还是要以源文件的权限为准。
Linux软连接和硬链接
linux硬链接与软链接Linux 系统中有软链接和硬链接两种特殊的“文件”。
软链接可以看作是Windows中的快捷方式,可以让你快速链接到目标档案或目录。
硬链接则透过文件系统的inode来产生新档名,而不是产生新档案。
创建方法都很简单:1.软链接(符号链接)ln -s source target2.硬链接(实体链接)ln source targetinode要解释清楚两者的区别和联系需要先说清楚linux 文件系统中的inode 这个东西。
当划分磁盘分区并格式化的时候,整个分区会被划分为两个部分,即inode区和data block(实际数据放置在数据区域中)这个inode即是(目录、档案)文件在一个文件系统中的唯一标识,需要访问这个文件的时候必须先找到并读取这个文件的inode。
Inode 里面存储了文件的很多重要参数,其中唯一标识称作Inumber, 其他信息还有创建时间(ctime)、修改时间(mtime) 、文件大小、属主、归属的用户组、读写权限、数据所在block号等信息。
通常会根据分区的用途来安排inode的数量(这是另外一个话题了),比如文件数量很多而文件都很小,则需要调增inode较大,以便能索引全部文件。
否则将会出现这个分区并没有写满而无法写入任何文件的情况。
目录文件与档案文件目录文件:记录该目录下的文件名档案文件:记录实际文件数据inode本身并不记录文件名,文件名记录在目录文件的block当中,所以新增、删除、更改文件名与目录的W权限有关。
因此当我们要读某个档案时,就务必经过其目录的inode和block,然后才能够找到待读取档案的inode号,最终才会读到正确的档案block内的数据。
系统是通过索引节点(而不是文件名)来定位每一个文件。
目录inode(满足权限?)=> 目录block => 档案inode(满足权限?)=> 档案block硬链接多个档名对应同一个inode,硬链接只是在某个目录下新增一笔档名链接到某个inode号码的关联记录而已。
转:linux文件链接(软链接和硬链接)
转:linux⽂件链接(软链接和硬链接)链接:⼀种在共享⽂件和访问它的⽤户的若⼲⽬录项之间建⽴联系的⼀种⽅法。
Linux中包括两种链接:硬链接(Hard Link)和软链接(Soft Link),软链接⼜称为符号链接(Symbolic link)。
我们⾸先来了解⼀下⼏个名词:索引节点(inode)要了解链接,我们⾸先得了解⼀个概念,叫索引节点(inode)。
在Linux系统中,内核为每⼀个新创建的⽂件分配⼀个Inode(索引结点),每个⽂件都有⼀个惟⼀的inode号,我们可以将inode简单理解成⼀个指针,它永远指向本⽂件的具体存储位置。
⽂件属性保存在索引结点⾥,在访问⽂件时,索引结点被复制到内存在,从⽽实现⽂件的快速访问。
系统是通过索引节点(⽽不是⽂件名)来定位每⼀个⽂件。
硬链接(Hard Link)硬链接说⽩了是⼀个指针,指向⽂件索引节点,系统并不为它重新分配inode。
可以⽤:ln命令来建⽴硬链接。
引⽤ln [options] existingfile newfileln [options] existingfile-list directory⽤法:第⼀种为”existingfile”创建硬链接,⽂件名为”newfile”。
第⼆种在”directory”⽬录中,为” existingfile-list”中包含的所有⽂件创建⼀个同名的硬链接。
常⽤可选[options]:-f ⽆论”newfile”存在与否,都创建链接。
-n 如果”newfile”已存在,就不创建链接。
软链接(Soft Link)软链接⼜叫符号链接,这个⽂件包含了另⼀个⽂件的路径名。
可以是任意⽂件或⽬录,可以链接不同⽂件系统的⽂件。
和win下的快捷⽅式差不多。
可以⽤:ln -s 命令来建⽴软链接。
引⽤ln -s existingfile newfileln -s existingfile-list directory下⾯我们⽤⼀个实例来说明硬链接和软链接。
4.软链接和硬链接
文件构成及软连接、硬连接详解一、简介大家在windows下可以看到我们桌面上有一些程序。
双击它就可以运行了。
在我们桌面上的图标只是一个快捷方式,它真正的运行路径是在其他的磁盘中。
这个就是我们的windows中链接。
我们的Linux系统中也存在类似的形式,我们Linux中的链接形式有两种,一种叫做软链接,一种叫做硬连接。
在讲解之前,大家需要先知道一些文件的基本知识。
Linux系统中一个文件由目录项、inode表和数据块组成。
test.c目录项:包括文件名和inode节点号Inode表:包含文件的一些信息。
例如,inode号,文件类型,文件大小等待。
数据块:文件具体内容存放的地方。
当我们查看一个文件的时候,linux系统的运行过程如下图。
test.c ===>10001、首先根据文件名,找到我们目录项中的inode号。
2、通过inode号进入我们inode表中,查找到该文件中一些信息。
3、然后通过inode表中的保存的数据区的指针,读取我们相应数据区的内容。
一、硬链接本质:是给我们的文件取别名。
与源文件直接关联。
修改一个,另一个同时被修改。
删除一个另一个不会有影响。
Linux系统中规定,只有在文件的打开次数为0(即文件这个时候没有打开),并且文件的硬连接数为0,此时文件才会被删除特点:(1)不占用硬盘空间(2)不能对目录操作(3)不能跨文件系统命令:ln 源文件名硬链接文件名例如:由上面接口可以知道,我们新建的硬链接文件,只是给源文件起了一个别名,他们公用同一个inode号。
二、软链接(符号链接)本质:类似于我们windows的快捷方式,用来记录我们目标的路径特点:(1)占用磁盘空间(2)可以对目录操作(3)可以跨文件系统命令:ln -s 源文件软链接文件可以发现我们新建的hello2.c实质是我们hell1.c的快捷方式。
并且他们的inode号不一样。
原理图:从图上可以看出硬链接和软链接的区别:1:硬链接原文件和新文件的inode编号一致。
详解linux软连接和硬链接
详解linux软连接和硬链接本篇⽂章详细介绍了linux软连接和硬链接,废话不多说,接着往下看把。
⼀链接⽂件Linux链接分两种,⼀种被称为硬链接(Hard Link),另⼀种被称为符号链接(Symbolic Link)。
默认情况下,ln命令产⽣硬链接。
【软连接】另外⼀种连接称之为符号连接(Symbolic Link),也叫软连接。
软链接⽂件有类似于Windows的快捷⽅式。
它实际上是⼀个特殊的⽂件。
在符号连接中,⽂件实际上是⼀个⽂本⽂件,其中包含的有另⼀⽂件的位置信息。
链接⽂件甚⾄可以链接不存在的⽂件,这就产⽣⼀般称之为"断链"的问题(或⽈“现象"),链接⽂件甚⾄可以循环链接⾃⼰。
类似于编程语⾔中的递归。
⽤ln -s 命令可以⽣成⼀个软连接,如下:[root@linux236 test]# ln -s source_file softlink_file在对符号⽂件进⾏读或写操作的时候,系统会⾃动把该操作转换为对源⽂件的操作,但删除链接⽂件时,系统仅仅删除链接⽂件,⽽不删除源⽂件本⾝。
ps:给⽬录加软连接1、⽆论是源⽂件地址还是⽬标⽂件地址必须使⽤绝对路径,否则会出现“符号连接的层数过多” 这样的错误【硬连接】硬连接指通过索引节点来进⾏连接。
在Linux的⽂件系统中,保存在磁盘分区中的⽂件不管是什么类型都给它分配⼀个编号,称为索引节点号(Inode Index)。
在Linux中,多个⽂件名指向同⼀索引节点是存在的。
⼀般这种连接就是硬连接。
硬连接的作⽤是允许⼀个⽂件拥有多个有效路径名,这样⽤户就可以建⽴硬连接到重要⽂件,以防⽌“误删”的功能。
其原因如上所述,因为对应该⽬录的索引节点有⼀个以上的连接。
只删除⼀个连接并不影响索引节点本⾝和其它的连接,只有当最后⼀个连接被删除后,⽂件的数据块及⽬录的连接才会被释放。
也就是说,⽂件真正删除的条件是与之相关的所有硬连接⽂件均被删除。
linux的硬链接和软链接
1.Linux链接概念Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。
默认情况下,ln命令产生硬链接。
【硬连接】硬连接指通过索引节点来进行连接。
在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。
在Linux中,多个文件名指向同一索引节点是存在的。
一般这种连接就是硬连接。
硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。
其原因如上所述,因为对应该目录的索引节点有一个以上的连接。
只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。
也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
【软连接】另外一种连接称之为符号连接(Symbolic Link),也叫软连接。
软链接文件有类似于Windows的快捷方式。
它实际上是一个特殊的文件。
在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
2.通过实验加深理解[oracle@Linux]$ touch f1 #创建一个测试文件f1[oracle@Linux]$ ln f1 f2 #创建f1的一个硬连接文件f2[oracle@Linux]$ ln -s f1 f3 #创建f1的一个符号连接文件f3[oracle@Linux]$ ls -li # -i参数显示文件的inode节点信息total 09797648 -rw-r--r-- 2 oracle oinstall 0 Apr 21 08:11 f19797648 -rw-r--r-- 2 oracle oinstall 0 Apr 21 08:11 f29797649 lrwxrwxrwx 1 oracle oinstall 2 Apr 21 08:11 f3 -> f1从上面的结果中可以看出,硬连接文件f2与原文件f1的inode节点相同,均为9797648,然而符号连接文件的inode节点不同。
软链接vs.硬链接
软链接vs.硬链接链接大家都用过,比如Windows 中的快捷方式就是一种链接,可是Linux 里又分硬链接和软链接,它们表示什么意思,又有什么区别呢,本文来给大家做一个解释。
Inode 索引节点要想理解硬链接和软链接的区别,首先要明白什么是Inode。
Inode 是 Index node,索引节点的意思。
每个文件都有一个 inode,里边保存着文件的元数据(meta data),包括:inode 号、文件大小、文件所有者、文件权限、文件类型、创建时间、硬链接数等等,除了文件名以外的所有文件信息都存储在这里。
它是文件或者目录在一个文件系统中的唯一标识。
查看一个文件的 inode,可以用 stat 命令,或者 ls -i 选项来查看。
下面分别用这两个命令来查看一个文件myfile.txt 的inode 号为102171635和元数据相对应的是用户数据(user data),或者也叫文件数据块(data block),文件的真实内容是存储在这里边的。
我们通过一个文件名可以查到它对应的inode,再通过inode 去查看文件的内容。
它们之间的关系可以用下面这张图来表示。
硬链接 Hard Links当多个文件名指向同一个inode 时,这种链接就被称为硬链接。
比如像下面的这种情况,我们为原始文件myfile.txt 创建了两个链接,hardlink1 和 hardlink2,它们都指向同一个 inode,所以它们都是硬链接。
从图中可以看出,硬链接指向的文件内容其实就是原始文件的内容,所以硬链接的作用之一就是可以节省服务器的磁盘空间。
硬链接的另外一个作用就是可以防止文件被“误删”。
因为inode 会记录文件硬链接的次数,只有当硬链接等于0 的时候,才会把存储着文件内容的数据块删除,所以比如我不小心把myfile.txt 文件删除了,但是inode 发现还有另外两个硬链接在,所以不会删除掉数据块,通过两个硬链接我们还是可以读取到文件内容。
linux链接的使用创建和删除符号连接(软、硬链接)
linux链接的使⽤创建和删除符号连接(软、硬链接)1 . 使⽤⽅式:ln [option] source_file dist_file (source_file是待建⽴链接⽂件的⽂件,dist_file是新创建的链接⽂件)-f 建⽴时,将同档案名删除.-i 删除前进⾏询问.ln -s abc cde 建⽴abc 的软连接ln abc cde 建⽴abc的硬连接,2. 软链接与硬链接的区别(通俗):硬链接可认为是⼀个⽂件拥有两个⽂件名; ⽽软链接则是系统新建⼀个链接⽂件,此⽂件指向其所要指的⽂件此外,软链接可对⽂件和⽂件夹。
⽽硬链接仅针对⽂件。
3. 软链接与硬链接的区别(讲解):Linux 软连接与硬连接对于⼀个⽂件来说,有唯⼀的索引接点与之对应,⽽对于⼀个索引接点号,却可以有多个⽂件名与之对应。
因此,在磁盘上的同⼀个⽂件可以通过不同的路径去访问该⽂件。
注意在Linux下是⼀切皆⽂件的啊,⽂件夹、新加的硬盘 ...都可以看着⽂件来处理的啊。
连接有软连接和硬连接(hard link)之分的,软连接(symbolic link)⼜叫符号连接。
符号连接相当于Windows下的快捷⽅式。
不可以对⽂件夹建⽴硬连接的,我们通常⽤的还是软连接⽐较多。
eg:ln -s source dist # 建⽴软连接ln source dist # 建⽴硬连接软链接实际上只是⼀段⽂字,⾥⾯包含着它所指向的⽂件的名字,系统看到软链接后⾃动跳到对应的⽂件位置处进⾏处理;相反,硬联接为⽂件开设⼀个新的⽬录项,硬链接与⽂件原有的名字是平权的,在Linux看来它们是等价的。
由于这个原因,硬链接不能连接两个不同⽂件系统上的⽂件。
(1)软连接可以跨⽂件系统,硬连接不可以。
实践的⽅法就是⽤共享⽂件把windows下的 aa.txt⽂本⽂档连接到linux下/root⽬录下 bb,cc . ln -s aa.txt /root/bb 连接成功。
描述硬链接和软链接区别
描述硬链接和软链接区别
回答思路:
1、软硬链接的概念;
2、如何创建软硬链接;
3、对于⽂件软硬链接区别;
4、对于⽬录软硬链接区别;
linux系统中,链接分两种:⼀种被成为硬链接(hard link),另⼀种被称为符号链接或者软链接(Symbolic Link)。
1、如何创建
默认不带参数情况下,ln命令创建的是硬链接,带-s参数的命令创建的是软链接。
2、含义
硬链接⽂件与源⽂件的inode节点号相同,⽽软链接⽂件相当于windows下⾯的快捷⽅式(inode节点号与源⽂件不同)
3、特点
a、不能对⽬录创建硬链接,但可以创建软链接,对⽬录的软链接会经常被⽤到。
b、软链接可以跨⽂件系统,硬链接不可以跨⽂件系统。
4、源⽂件,软链接,硬链接与删除
a、删除软链接⽂件,对源⽂件及硬链接⽂件⽆任何影响;
b、删除⽂件的硬链接⽂件,对源⽂件及软链接⽂件⽆任何影响;
c、删除链接⽂件的源⽂件,对硬链接⽂件⽆影响,会导致软链接⽂件失效。
d、同时删除源⽂件及硬链接⽂件,整个⽂件才会真正被删除。
13硬链接和软链接
四、示例
二、软链接(soft links)
today.todo tuesday.todo
inode
inode
“tuesday.todo”
data
二、软链接(soft links)
用ln命令创建软链接
ln -s [target] [link] 复制的时候,只要文件和链接的层级关系不变就能 成功链接
i-节点
data
一、硬链接(hard links)
用ln命令创建硬链接后,该文件虽然还是只有 一个i-节点,却有两个dentry与之相连。 此时文件的链接数是2 当一个用户修改了权限时,另一个用户也看到 了权限的改变 如果一个用户删除文件,i-节点依然存在,只 是少了一个dentry与之相连,链接数减少1 当一个文件的链接数为0时,才会被系统删除, 否则只是“unlink(脱链)”文件。
使用硬链接
touch a ln a hardlink ls -il //a和hardlink的i-节点相同 echo “hello” > a echo “world” >> hardlink cat a //查看a和查看hardlink结果是相同的 mv a b ls il //移动甚至删除文件对硬链接没有影响
四、示例
使用软链接(重复同样的练习,只是这次使
用软链接)
touch m ln -s m softlink ls -li //两个文件的i-节点不同 echo “hello” > m echo “world” >> softlink cat m //查看m和查看softlink结果相同 mv m n ls -il //softlink是个空链接了
软连接和硬链接的区别详解
linux硬链接和软链接的区别简而言之,软链接相当于windows中的快捷方式,硬链接相当于一个灾备系统,数据存放在两处,与复制不同的是两处之间存在同步机制,一处数据的改变会实时同步到另一处,另外,一处数据如果被删除了,不会影响到另一处的数据.下面是详细的介绍:硬连接指向的是节点(inode),是已存在文件的另一个名字,修改其中一个,与其连接的文件同时被修改;对硬链接文件进行读写和删除操作时候,效果和软链接相同。
但如果我们删除硬链接文件的源文件,硬链接文件仍然存在,而且保留了原有的内容。
这时,系统就“忘记”了它曾经是硬链接文件,而把他当成一个普通文件。
硬链接文件有两个限制:1、不允许给目录创建硬链接;2、只有在同一文件系统中的文件之间才能创建链接。
软连接指向的是路径(path),软链接又叫符号链接,这个文件包含了另一个文件的路径名。
可以是任意文件或目录,还可以链接不同文件系统的文件,和win下的快捷方式差不多。
软链接文件甚至可以链接不存在的文件,这就产生一般称之为"断链"的问题(或曰“现象"),链接文件甚至可以循环链接自己,类似于编程语言中的递归。
命令格式:ln -s source_path target_path //软链接文件Source为源文件 target为目标文件。
ln -d existfile newfile //硬链接文件,如果不加任何参数,默认情况下就是硬链接.Newfile 为不是自己建的系统建的。
示例:$ ln httpd.conf httpd1.conf$ ln -s httpd.conf httpd2.conf第一条为硬链接,第二条为软链接$ ls -li //查看一个文件或目录的inode,要通过ls 命令的的 -i参数,inode值相同的文件,他们的关系是互为硬链接的关系总用量 801077669 -rw-r--r-- 2sam adm 34890 10月 31 00:57 httpd1.conf 1077668 lrwxrwxrwx 1sam adm 10 10月 31 00:58httpd2.conf ->;httpd.conf1077669 -rw-r--r-- 2sam adm 34890 10月 31 00:57 httpd.conf可以看到,使用ls -li,软连接只产生了10字节的快捷而已,硬连接却实实在在的的拷贝。
linux的硬链接和软链接
1.Linux链接概念Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。
默认情况下,ln命令产生硬链接。
【硬连接】硬连接指通过索引节点来进行连接。
在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。
在Linux中,多个文件名指向同一索引节点是存在的。
一般这种连接就是硬连接。
硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。
其原因如上所述,因为对应该目录的索引节点有一个以上的连接。
只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。
也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
【软连接】另外一种连接称之为符号连接(Symbolic Link),也叫软连接。
软链接文件有类似于Windows的快捷方式。
它实际上是一个特殊的文件。
在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
2.通过实验加深理解[oracle@Linux]$ touch f1 #创建一个测试文件f1[oracle@Linux]$ ln f1 f2 #创建f1的一个硬连接文件f2 [oracle@Linux]$ ln -s f1 f3 #创建f1的一个符号连接文件f3 [oracle@Linux]$ ls -li # -i参数显示文件的inode节点信息total 09797648 -rw-r--r-- 2 oracle oinstall 0 Apr 21 08:11 f1 9797648 -rw-r--r-- 2 oracle oinstall 0 Apr 21 08:11 f2 9797649 lrwxrwxrwx 1 oracle oinstall 2 Apr 21 08:11 f3 -> f1从上面的结果中可以看出,硬连接文件f2与原文件f1的inode节点相同,均为9797648,然而符号连接文件的inode节点不同。
Linux下软连接(softlink)和硬连接(hardlink)的区别
Linux下软连接(softlink)和硬连接(hardlink)的区别通过实际操作来辨别softlink和hardlink的区别:首先我们在/home/下建立了一个文件source.file[root@wang home]# lltotal 8-rw-r--r-- 1 root root 26 Dec 6 12:07 source.file接着分别建立两种连接:[root@wang home]# ln source.file hardlink.file ----------------- hardlink[root@wang home]# ln -s source.file softlink.file ----------------- softlink建好连接文件之后,我们用ll命令查看一下有什么不一样的地方:[root@wang home]# lltotal 20-rw-r--r-- 2 root root 26 Dec 6 12:07 hardlink.file ----------------- hardlinklrwxrwxrwx 1 root root 11 Dec 6 12:08 softlink.file -> source.file ----------------- softlink-rw-r--r-- 2 root root 26 Dec 6 12:07 source.file我们可以看到软连接和硬连接在四个地方不同:1,文件类别上,hardlink显示的是正常的普通文件,而softlink 生成的文件显示的是一个连接文件,并且操作权限也不一样;2,上面输出的第二列也就是连接数不一样;3,文件的大小不一样;hardlink生成的文件和原文件一模一样,而softlink只是一个符号连接。
4,softlink生成的文件有个指向-〉原文件的标志接着我们用ll -i命令看一下,-i能显示出文件的inode号[root@wang home]# ll -itotal 20652046 -rw-r--r-- 2 root root 26 Dec 6 12:07 hardlink.file651589 lrwxrwxrwx 1 root root 11 Dec 6 12:08 softlink.file -> source.file652046 -rw-r--r-- 2 root root 26 Dec 6 12:07 source.file可以看到hardlink生成的文件和原文件的inode一样,而连接数是2了;硬连接指向的是节点(inode),而软连接指向的是路径(path);所以当删除原文件,hardlink.file能正常使用而softlink.file则提示出错总结:(1)由于不同的分区会有相同的inode及硬连接的特殊性和文件系统的可卸载性,导致硬连接不容许跨文件系统(分区)!而soft link 具有完整的 pathname,所以他可以跨越不同文件系统。
硬链接与软链接的区别
硬链接和软连接的区别:要说明这个问题,先说明下liunx下文件和目录的本质。
事实上,在liunx上,目录也是文件的一种,它是储存了一张表的文件。
例如有一个叫程序的文件夹,里面有两个文件1和2.在那张目录表内。
它的内容是这样的名称节点1 3382 228那么什么是节点呢?c语言我们都学过,我们简单地把节点号理解成一个数组的下标,把内存看成一个大数组,每个文件都可以看成一个数组中的一个元素,而知道了节点号,就可以找到了实质的文件内容。
有了以上的认识,就可以进一步地解释硬链接:硬链接的书写格式是:ln 目标文件名链接名那么它的过程是怎么样的呢?例如我们输入:ln 3 2那么,在同个目录表下增加一项名称节点1 3382 2283 228这时候,文件3也指向了跟2一样的内存块,也就是说跟2的内容是完全一样的。
而软连接又是怎么回事呢?这里得说明,软连接和硬链接也是特殊的文件,在liunx中的所有都是以文件表示的,软连接可以看成一个文本文件,它的内容是保存目标文件名的路径地址。
软连接的格式是ln -s 目标文件名链接名例如输入ln -s 4 2它的执行过程是这样的,先把2文件的路径名复制到4,执行4时,先从中读到2的路径名,找到2这个文件,然后执行2.所以对4文件的操作都是对2文件的操作。
上面说明了具体的原理。
如果要通俗点理解。
可以把硬链接当成源文件的副本,它显示跟源文件一样的大小但事实上却不占任何空间。
(够神奇吧)而软连接大可以理解出windows 的快捷方式。
至于更深入的区别,欢迎一起来讨论硬链接和软链接的区别一链接文件链接有两种方式,软链接和硬链接。
1 软链接文件软链接又叫符号链接,这个文件包含了另一个文件的路径名。
可以是任意文件或目录,可以链接不同文件系统的文件。
链接文件甚至可以链接不存在的文件,这就产生一般称之为"断链"的问题(或曰“现象"),链接文件甚至可以循环链接自己。
软链接和硬链接详解
Linux 的文件与目录现代操作系统为解决信息能独立于进程之外被长期存储引入了文件,文件作为进程创建信息的逻辑单元可被多个进程并发使用。
在UNIX 系统中,操作系统为磁盘上的文本与图像、鼠标与键盘等输入设备及网络交互等I/O 操作设计了一组通用API,使他们被处理时均可统一使用字节流方式。
换言之,UNIX 系统中除进程之外的一切皆是文件,而Linux 保持了这一特性。
为了便于文件的管理,Linux 还引入了目录(有时亦被称为文件夹)这一概念。
目录使文件可被分类管理,且目录的引入使Linux 的文件系统形成一个层级结构的目录树。
清单1.所示的是普通Linux 系统的顶层目录结构,其中/dev 是存放了设备相关文件的目录。
清单 1. Linux 系统的顶层目录结构Linux 与其他类UNIX 系统一样并不区分文件与目录:目录是记录了其他文件名的文件。
使用命令mkdir 创建目录时,若期望创建的目录的名称与现有的文件名(或目录名)重复,则会创建失败。
Linux 将设备当做文件进行处理,清单2.展示了如何打开设备文件/dev/input/event5 并读取文件内容。
文件event5 表示一种输入设备,其可能是鼠标或键盘等。
查看文件/proc/bus/input/devices 可知event5 对应设备的类型。
设备文件/dev/input/event5 使用read() 以字符流的方式被读取。
结构体input_event 被定义在内核头文件linux/input.h 中。
清单 2. 打开并读取设备文件硬链接与软链接的联系与区别我们知道文件都有文件名与数据,这在Linux 上被分成两个部分:用户数据(user data) 与元数据(metadata)。
用户数据,即文件数据块(data block),数据块是记录文件真实内容的地方;而元数据则是文件的附加属性,如文件大小、创建时间、所有者等信息。
在Linux 中,元数据中的inode 号(inode 是文件元数据的一部分但其并不包含文件名,inode 号即索引节点号)才是文件的唯一标识而非文件名。
5分钟让你明白“软链接”和“硬链接”的区别
5分钟让你明⽩“软链接”和“硬链接”的区别虽然⼜是知名撕逼王曾某的撕逼帖,但是我还是想就题⽬中链接的问题简单地讲讲。
什么是链接?链接简单说实际上是⼀种⽂件共享的⽅式,是 POSIX 中的概念,主流⽂件系统都⽀持链接⽂件。
它是⽤来⼲什么的?你可以将链接简单地理解为 Windows 中常见的快捷⽅式(或是 OS X 中的替⾝),Linux 中常⽤它来解决⼀些库版本的问题,通常也会将⼀些⽬录层次较深的⽂件链接到⼀个更易访问的⽬录中。
在这些⽤途上,我们通常会使⽤到软链接(也称符号链接)。
软链接和硬链接的区别是?下⾯我们进⼊正题,来探讨⼀下软硬两种链接到底有什么区别?⾸先,从使⽤的⾓度讲,两者没有任何区别,都与正常的⽂件访问⽅式⼀样,⽀持读写,如果是可执⾏⽂件的话也可以直接执⾏。
那区别在哪呢?在底层的原理上。
为了解释清楚,我们⾸先在⾃⼰的⼀个⼯作⽬录下创建⼀个⽂件,然后对这个⽂件进⾏链接的创建:$ touch myfile && echo "This is a plain text file." > myfile$ cat myfileThis is a plain text file.现在我们创建了⼀个普通地不能再普通的⽂件了。
然后我们对它创建⼀个硬链接,并查看⼀下当前⽬录:$ ln myfile hard$ ls -li25869085 -rw-r--r-- 2 unixzii staff 27 7 8 17:39 hard25869085 -rw-r--r-- 2 unixzii staff 27 7 8 17:39 myfile在ls结果的最左边⼀列,是⽂件的inode值,你可以简单把它想成 C 语⾔中的指针。
它指向了物理硬盘的⼀个区块,事实上⽂件系统会维护⼀个引⽤计数,只要有⽂件指向这个区块,它就不会从硬盘上消失。
你也看到了,这两个⽂件就如同⼀个⽂件⼀样,inode值相同,都指向同⼀个区块。
软连接和硬链接的优缺点
软连接和硬链接的优缺点硬连接记录的是目标的inode,符号连接记录的是目标的path。
软连接就像是快捷方式,而硬连接就像是备份!符号连接可以做跨分区的link;而硬连接由于inode 的缘故,只能在本分区中做link.所以,符号连接的使用频率要高的多。
存在两种不同类型的链接,软链接和硬链接。
修改其中一个,硬连接指向的是节点(inode),而软连接指向的是路径(path)软链接文件软链接又叫符号链接,这个文件包含了另一个文件的路径名。
可以是任意文件或目录,可以链接不同文件系统的文件。
和win下的快捷方式差不多。
链接文件甚至可以链接不存在的文件,这就产生一般称之为"断链"的问题(或曰“现象",链接文件甚至可以循环链接自己。
类似于编程语言中的递归。
命令格式:代码:ln [-s] source_path target_path硬链接文件info ln 命令告诉您,硬链接是已存在文件的另一个名字,硬连接的命令是代码:ln -d existfile newfile引用:硬链接文件有两个限制1、不允许给目录创建硬链接;2、只有在同一文件系统中的文件之间才能创建链接。
对硬链接文件进行读写和删除操作时候,结果和软链接相同。
但如果我们删除硬链接文件的源文件,硬链接文件仍然存在,而且保留了愿有的内容。
这时,系统就“忘记”了它曾经是硬链接文件。
而把他当成一个普通文件。
修改其中一个,与其连接的文件同时被修改代码:$umask 022$ cp /etc/httpd/conf/httpd.conf /usr/sam原来前面做的试验,改变了系统默认的umask值,现在改回来为022,举个httpd.conf文件做例子代码:$ ln httpd.conf httpd1.conf$ ln -s httpd.conf httpd2.conf第一条为硬链接,第二条为软链接代码:$ ls -li代码:总用量801077669 -rw-r--r-- 2 sam adm 34890 10月31 00:57 httpd1.conf1077668 lrwxrwxrwx 1 sam adm 10 10月31 00:58 httpd2.conf ->; httpd.conf1077669 -rw-r--r-- 2 sam adm 34890 10月31 00:57 httpd.conf可以看到,使用ls -li,软连接只产生了10字节的快捷而已,硬连接却实实在在的的拷贝。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
linux硬链接和软链接的区别简而言之,软链接相当于windows中的快捷方式,硬链接相当于一个灾备系统,数据存放在两处,与复制不同的是两处之间存在同步机制,一处数据的改变会实时同步到另一处,另外,一处数据如果被删除了,不会影响到另一处的数据.下面是详细的介绍:硬连接指向的是节点(inode),是已存在文件的另一个名字,修改其中一个,与其连接的文件同时被修改;对硬链接文件进行读写和删除操作时候,效果和软链接相同。
但如果我们删除硬链接文件的源文件,硬链接文件仍然存在,而且保留了原有的内容。
这时,系统就“忘记”了它曾经是硬链接文件,而把他当成一个普通文件。
硬链接文件有两个限制:1、不允许给目录创建硬链接;2、只有在同一文件系统中的文件之间才能创建链接。
软连接指向的是路径(path),软链接又叫符号链接,这个文件包含了另一个文件的路径名。
可以是任意文件或目录,还可以链接不同文件系统的文件,和win下的快捷方式差不多。
软链接文件甚至可以链接不存在的文件,这就产生一般称之为"断链"的问题(或曰“现象"),链接文件甚至可以循环链接自己,类似于编程语言中的递归。
命令格式:ln -s source_path target_path //软链接文件Source为源文件 target为目标文件。
ln -d existfile newfile //硬链接文件,如果不加任何参数,默认情况下就是硬链接.Newfile 为不是自己建的系统建的。
示例:$ ln httpd.conf httpd1.conf$ ln -s httpd.conf httpd2.conf第一条为硬链接,第二条为软链接$ ls -li //查看一个文件或目录的inode,要通过ls 命令的的 -i参数,inode值相同的文件,他们的关系是互为硬链接的关系总用量 801077669 -rw-r--r-- 2sam adm 34890 10月 31 00:57 httpd1.conf 1077668 lrwxrwxrwx 1sam adm 10 10月 31 00:58httpd2.conf ->;httpd.conf1077669 -rw-r--r-- 2sam adm 34890 10月 31 00:57 httpd.conf可以看到,使用ls -li,软连接只产生了10字节的快捷而已,硬连接却实实在在的的拷贝。
最前面的inode硬链接和源文件是一样的,而软链接不一样.对http1.conf进行编辑,可以发现httpd.conf也发生了一样的变化.现在使用命令:$ rm httpd.conf现在删除链接的源文件,来比较不同之处代码:$ ls -l总用量 44-rw-r--r-- 1 sam adm 34890 10月31 00:57 httpd1.conflrwxrwxrwx 1 sam adm 10 10月 31 00:58 httpd2.conf ->; httpd.conf发现,httpd2.conf实际已经不存在了,是断链,而httpd1.conf变也了普通文件.一、硬链接硬链接说白了是一个指针,指向文件索引节点,系统并不为它重新分配inode。
可以用:ln命令来建立硬链接。
语法:ln [options] existingfile newfileln[options] existingfile-list directory用法: 第一种:为”existingfile”创建硬链接,文件名为”newfile”。
第二种:在”directory”目录中,为”existingfile-list”中包含的所有文件创建一个同名的硬链接。
常用可选[options] –f 无论”newfile”存在与否,都创建链接。
-n 如果”newfile”已存在,就不创建链接。
下面举一些例子:$ ls –il13058 -rwx - - - - - - 1 longcheng longcheng 48 8月 5 16:38 file1 13059 -rwx - - - - - - 1 longcheng longcheng 57 8月 5 16:40 file2 $ ln file2 file2hard$ ls –il13058 -rwx - - - - - - 1 longcheng longcheng 48 8月 5 16:38 file1 13059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file2 13059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file2hard注意在创建链接前,file1 显示的链接数目为1,创建链接后(1)file1和file1hard的链接数目都变为2;(2)file1和file1hard在inode号是一样的(3) file1和file1hard显示的文件大小也是一样。
可见进行了ln命令的操作结果:file1和file1hard是同一个文件的两个名字,它们具有同样的索引节点号和文件属性,建立文件file1的硬链接,就是为file1的文件索引节点在当前目录上建立一个新指针。
如下图,你可以删除其中任何一个,如rm file2 ,每次只会删除一个指针,链接数同时减一,只有将所有指向文件内容的指针,也即链接数减为0时,内核才会把文件内容从磁盘上删除。
还可以在不同目录,但同一文件系统中建立文件的硬链接。
设file1、file2在目录/home/longcheng/dir1中,下面的命令,在/home/longcheng中建立file2的硬链接。
ln file2 /home/longcheng/file2hard下面的程序,是将dir1目录中所有文件,在目录dir2中建立硬链接$mkdir dir2$ln /home/longcheng/dir1/* /home/longcheng/dir2如果使用了 ln –f existingfile newfile,如果newfile已经存在,则无论原来newfile是什么文件,只用当前用户对它有写权限,newfile就成为exisitngfile的硬链接文件。
尽管硬链接节省空间,也是Linux系统整合文件系统的传统方式,但是存在一下不足之处:(1)不可以在不同文件系统的文件间建立链接(2)只有超级用户才可以为目录创建硬链接。
虽然很多树上说root用户可以创建,但是笔者在学习过程中发现即使是root用户也不能创建,我的系统是Redhat,内核 2.4、2.6都试过,在其他系统中不知道是不是可以。
二、软链接(符号链接)软链接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符号链接。
因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件进行链接。
建立软链接,只要在ln后面加上选项–s,下面举个例子$ ls -il13058 -rwx - - - - - - 1 longcheng longcheng 48 8月 5 16:38 file1 13059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file2 13059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file2hard $ln –s file1 file1soft$ls -il13058 -rwx - - - - - - 1 longcheng longcheng 48 8月 5 16:38 file1 13059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file2 13059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file2hard 13061 lrwxrwxrwx 1 longcheng longcheng 5 8月 5 16:58 file1soft->file1从上面链接后的结果可以看出来软链接与硬链接,区别不仅仅是在概念上,在实现上也是不同的。
区别:硬链接原文件&链接文件公用一个inode号,说明他们是同一个文件,而软链接原文件&链接文件拥有不同的inode号,表明他们是两个不同的文件;在文件属性上软链接明确写出了是链接文件,而硬链接没有写出来,因为在本质上硬链接文件和原文件是完全平等关系;链接数目是不一样的,软链接的链接数目不会增加;文件大小是不一样的,硬链接文件显示的大小是跟原文件是一样的,这用强调,因为是等同的嘛,而这里软链接显示的大小与原文件就不同了,file1大小是48B,而file1soft是5B,这里面的5实际上就是“file1”的大小。
总之,建立软链接就是建立了一个新文件。
当访问链接文件时,系统就会发现他是个链接文件,它读取链接文件找到真正要访问的文件。
在不同系统之间建立软链接、对目录建立链接,这里就不举例了,读者可以自己去尝试,我也是在不断实践中学习的。
当然软链接也有硬链接没有的缺点,因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到了,而硬链接就没有这个缺陷,你想怎么移就怎么移;还有它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径linux 软连接和硬链接的区别软连接可以跨文件系统,硬连接不可以。
实践的方法就是用共享文件把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系统下提供ln指令来进行文件链接。