linux/unix中soft link和hard link的区别是什么
1、hard link
由于linux系统中的文件系统是通过访问inode去查询数据资料的,所以硬链接就是指不同的两个文件名都指向一个inode,两个不会互相影响,删除一个还有另一个存在。链接数会变多。
2、symbolic link
符号连接就不一样了,比如文件A指向inode号123456,而文件B中的内容只是文件A的路径,所以不管打开A还是B最后都是访问A,有点像windows下的快捷方式,如果A被删除了,B就无法正常使用了。链接数不变。
总结:硬链接不能跨文件系统,不能连接目录。因为如果硬链接目录的话,那此目录下所有的文件都要建立硬链接,以后创建新文件时又要创建新硬链接,对于计算机来说太复杂。
Linux中Hard link和Symbol link的区别
Linux的ln命令如果不用-s选项,建立的连接文件就是Hard link,如果ln命令加-s选项就是建立Symbolic link。建立Hard link只能在同一个文件系统内进行,不能跨文件系统;还有,Hard link不能连接到目录,只能连接到文件。而Symbolic link就没有这些限制,因为Hard link的这些限制Symbolic link的使用要比Hard link更加广泛,这就是它们之间的区别。
怎么理解linux中的硬链接?在实际工作中怎么用?
建立硬链接就是相当于给一个文件起别名。类比实际生活中,就像是给某个人取绰号。虽然硬链接名和源文件不一样,但是二者都是指向同一个硬盘中的资源。硬链接在实际工作中应用远没有软连接多:1)想让一个文件在多个目录下重复出现,但只占用一份文件的空间,就用硬链接。2)针对一块资源,如果想给不同的用户开不同权限,就用硬链接(结合修改权限的chmod命令即可)。
硬链接也是使用ln命令,举例:ln info info_h, 就是给源文件info创建了一个名为info_h的硬链接。
现在我也在黑马程序员当老师,这方面都可以咨询。官网视频库也有这些资料的视频介绍。
linux的硬链接有什么用途呢?
具体作用如下:
1.节省硬盘空间。同样的文件,只需要维护硬连接关系,不需要进行多重的拷贝,这样可以节省硬盘空间。
2.重命名文件。重命名文件并不需要打开该文件,只需改动某个目录项的内容即可。
3.删除文件。删除文件只需将相应的目录项删除,该文件的链接数减1,如果删除目录项后该文件的链接数为零,这时系统才把真正的文件从磁盘上删除。
4.文件更新。如果涉及文件更新,只需要先在WinSxS目录里面下载好一个新版本,然后修改面同名文件的硬即可改变;
通过创建链接节点,极大的提高了工作开发的效率,当然与他相对是软链接,不同的环境下,效果也大相径庭。
硬链接和软链接的区别
1、定义不同软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。硬链接就是一个文件的一个或多个文件名。把文件名和计算机文件系统使用的节点号链接起来。因此我们可以用多个文件名与同一个文件进行链接,这些文件名可以在同一目录或不同目录。2、限制不同硬链接只能对已存在的文件进行创建,不能交叉文件系统进行硬链接的创建;软链接可对不存在的文件或目录创建软链接;可交叉文件系统;3、创建方式不同硬链接不能对目录进行创建,只可对文件创建;软链接可对文件或目录创建;4、影响不同删除一个硬链接文件并不影响其他有相同 inode 号的文件。删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。
软连接和硬链接的区别
硬链接:新建的文件是已经存在的文件的一个别名,当原文件删除时,新建的文件仍然可以使用.
软链接:也称为符号链接,新建的文件以“路径”的形式来表示另一个文件,和Windows的快捷方式十分相似,新建的软链接可以指向不存在的文件.
下面详细介绍一下硬链接和软连接之间的区别.
1.硬链接和原来的文件没有什么区别,而且共享一个 inode 号(文件在文件系统上的唯一标识);而软链接不共享 inode,也可以说是个特殊的 inode,所以和原来的 inode 有区别。
2.若原文件删除了,则该软连接则不可以访问,而硬连接则是可以的。
3.由于符号链接的特性,导致其可以跨越磁盘分区,但硬链接不具备这个特性.
另外在转载一下网上的介绍.
硬链接(hard link) ln
UNIX文件系统提供了一种将不同文件链接至同一个文件的机制,称这种机制为链接。它可以使得单个程序对同一文件使用不同的名字。这样的好处是文件系统只存在一个文件的副本。系统简单地通过在目录中建立一个新的登记项来实现这种连接。该登记项具有一个新的文件名和要连接文件的inode号(inode与原文件相同)。不论一个文件有多少硬链接,在磁盘上只有一个描述它的inode,只要该文件的链接数不为0,该文件就保持存在。硬链接不能对目录建立硬链接!
硬连接是直接建立在节点表上的(inode),建立硬连接指向一个文件的时候,会更新节点表上面的计数值。举个例子,一个文件被连接了两次(硬连接),这个文件的计数值是3,而无论通过3个文件名中的任何一个访问,效果都是完全一样的,但是如果删除其中任意一个,都只是把计数值减1,不会删除实际的内容的,(任何存在的文件本身就算是一个硬连接)只有计数值变成0也就是没有任何硬连接指向的时候才会真实的删除内容。
软链接(symbolic link) ln-s
把符号链接称为软链接,它是指向另一个文件的特殊文件,这种文件的数据部分仅包含它所要链接文件的路径名。软链接是为了克服硬链接的不足而引入的,软链接不直接使用inode号作为文件指针,而是使用文件路径名作为指针(软链接:文件名 + 数据部分-->目标文件的路径名)。软件有自己的inode,并在磁盘上有一小片空间存放路径名。因此,软链接能够跨文件系统,也可以和目录链接!其二,软链接可以对一个不存在的文件名进行链接,但直到这个名字对应的文件被创建后,才能打开其链接。
硬链接和符号链接的区别
首先要弄清楚,在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号。文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存在,从而实现文件的快速访问。链接是一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法。Linux中包括两种链接:硬链接(Hard Link)和软链接(Soft Link),软链接又称为符号链接(Symbolic link)。一、硬链接硬链接说白了是一个指针,指向文件索引节点,系统并不为它重新分配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 file113059 -rwx - - - - - - 1 longcheng longcheng 57 8月 5 16:40 file2$ ln file2 file2hard$ ls –il13058 -rwx - - - - - - 1 longcheng longcheng 48 8月 5 16:38 file113059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file213059 -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都试过,在其他系统中不知道是不是可以。二、软链接(符号链接)符号链接是对一个文件的间接指针。硬链接直接指向文件的i节点。软链接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符号链接。因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件进行链接。建立软链接,只要在ln后面加上选项 –s,下面举个例子 $ ls -il13058 -rwx - - - - - - 1 longcheng longcheng 48 8月 5 16:38 file113059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file213059 -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 file113059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file213059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file2hard13061 lrwxrwxrwx 1 longcheng longcheng 5 8月 5 16:58 file1soft->file1从上面链接后的结果可以看出来软链接与硬链接,区别不仅仅是在概念上,在实现上也是不同的。区别:硬链接原文件&链接文件公用一个inode号,说明他们是同一个文件,而软链接原文件&链接文件拥有不同的inode号,表明他们是两个不同的文件;在文件属性上软链接明确写出了是链接文件,而硬链接没有写出来,因为在本质上硬链接文件和原文件是完全平等关系;链接数目是不一样的,软链接的链接数目不会增加;文件大小是不一样的,硬链接文件显示的大小是跟原文件是一样的,这用强调,因为是等同的嘛,而这里软链接显示的大小与原文件就不同了,file1大小是48B,而file1soft是5B,这里面的5实际上就是“file1”的大小。总之,建立软链接就是建立了一个新文件。当访问链接文件时,系统就会发现他是个链接文件,它读取链接文件找到真正要访问的文件。在不同系统之间建立软链接、对目录建立链接,这里就不举例了,读者可以自己去尝试,我也是在不断实践中学习的。当然软链接也有硬链接没有的缺点,因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到了,而硬链接就没有这个缺陷,你想怎么移就怎么移;还有它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径。补充一下:可以通过symlink来查看链接文件,可以用 man symlink来学习。
Linux系统中什么是软链接什么是硬链接如何
硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。
一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。
其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
Linux下软链接和硬链接的区别是什么?
1、定义不同
软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。
硬链接就是一个文件的一个或多个文件名。把文件名和计算机文件系统使用的节点号链接起来。因此我们可以用多个文件名与同一个文件进行链接,这些文件名可以在同一目录或不同目录。
2、限制不同
硬链接只能对已存在的文件进行创建,不能交叉文件系统进行硬链接的创建;
软链接可对不存在的文件或目录创建软链接;可交叉文件系统;
/iknow-pic.cdn.bcebos.com/35a85edf8db1cb13784969b9d354564e92584b73"target="_blank"title="点击查看大图"class="ikqb_img_alink">/iknow-pic.cdn.bcebos.com/35a85edf8db1cb13784969b9d354564e92584b73?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto"esrc="https://iknow-pic.cdn.bcebos.com/35a85edf8db1cb13784969b9d354564e92584b73"/>
3、创建方式不同
硬链接不能对目录进行创建,只可对文件创建;
软链接可对文件或目录创建;
4、影响不同
删除一个硬链接文件并不影响其他有相同inode号的文件。
删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即danglinglink,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。
linux中在复制一个目录时cp -a 和cp -r有什么区别
cp文件时候可以不用加参数,但是cp文件夹的时候必须加-R或-r,操作方法如下:1、首先打开linux,使用cp的命令格式2、这里移动文件1234.txt,ls -l//显示当前文件夹下所有文件的信息。3、复制1234.txt文件到新文件2345.txt,copy 1234.txt 2345.txt,这里可以看到两个文件大小相同,时间戳不同。4、复制1234.txt文件到新文件3456.txt并保持时间戳相同。5、最后复制目录到新的目录需要加上选项-r,cp -r test python,就可以了。