专栏首页米扑专栏linux软链接和硬链接

linux软链接和硬链接

简而言之:

软链接相当于windows中的快捷方式

硬链接相当于一个灾备系统,数据存放在两处,与复制不同的是两处之间存在同步机制,一处数据的改变会实时同步到另一处,另外一处数据如果被删除了,不会影响到另一处的数据.

下面是详细的介绍: 存在两种不同类型的链接,软链接和硬链接。修改其中一个,硬连接指向的是节点(inode),而软连接指向的是路径(path) 软链接文件 软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。和win下的快捷方式差不多。 链接文件甚至可以链接不存在的文件,这就产生一般称之为"断链"的问题(或曰“现象"),链接文件甚至可以循环链接自己。类似于编程语言中的递归。 命令格式: 代码: ln [-s] source_path target_path 硬链接文件 info ln 命令告诉您,硬链接是已存在文件的另一个名字,硬连接的命令是: 代码: ln -d existfile newfile   //如果不加任何参数,默认情况下是硬链接.

硬链接文件

硬链接文件有两个限制: 1、不允许给目录创建硬链接; 2、只有在同一文件系统中的文件之间才能创建链接。 对硬链接文件进行读写和删除操作时候,结果和软链接相同。但如果我们删除硬链接文件的源文件,硬链接文件仍然存在,而且保留了原有的内容。这时,系统就“忘记”了它曾经是硬链接文件。而把他当成一个普通文件。修改其中一个,与其连接的文件同时被修 改. 代码: $ cp /etc/httpd/conf/httpd.conf /usr/sam $ ln httpd.conf httpd1.conf (硬链接) $ ln -s httpd.conf httpd2.conf (软链接) 第一条为硬链接,第二条为软链接 代码: $ ls -li   //查看一个文件或目录的inode,要通过ls 命令的的 -i参数,inode值相同的文件,他们的关系是互为硬链接的关系 代码: 总用量 80 1077669    -rw-r--r--     2 sam       adm          34890 10月 31 00:57 httpd1.conf (连接数变为2) 1077668   lrwxrwxrwx     1 sam       adm             10 10月 31 00:58 httpd2.conf -> httpd.conf (类似于Win快捷方式) 1077669    -rw-r--r--     2 sam       adm          34890 10月 31 00:57 httpd.conf (连接数变为2) 可以看到,使用ls -li,软连接只产生了10字节的快捷而已,硬连接却实实在在的的拷贝。最前面的inode硬链接和源文件是一样的 ,而软链接不一样.对http1.conf进行编辑,可以发现httpd.conf也发生了一样的变化. 代码: $ rm httpd.conf 现在删除链接的源文件,来比较不同之处 代码: $ ls -l 总用量 44 drw-r--r--     2 sam       adm           4096 10月 30 20:14 file6 -rw-r--r--     1 sam       adm          34890 10月 31 00:57 httpd1.conf lrwxrwxrwx     1 sam       adm             10 10月 31 00:58 httpd2.conf -> httpd.conf 发现,httpd2.conf实际已经不存在了,是断链,而httpd1.conf变也了普通文件.

============================================================================

详细示例分析(截图):

查看硬链接ln关联的所有文件及路径

ls -i  myInfo.txt

3814056 myInfo.txt

find / -inum 3814056 

/home/homer/me/myInfo.txt /home/homer/me/.me/myInfo.txt_ln /home/homer/bin/myInfo.txt

=============================================================================

一 链接文件 链接有两种方式,软链接和硬链接。 1 软链接文件          软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。     链接文件甚至可以链接不存在的文件,这就产生一般称之为"断链"的问题(或曰“现象"),链接文件甚至可以循环链接自己。类似于编程语言中的递归。   用ln -s 命令可以生成一个软连接,如下:   [root@linux236 test]# ln -s  source_file softlink_file   在对符号文件进行读或写操作的时候,系统会自动把该操作转换为对源文件的操作,但删除链接文件时,系统仅仅删除链接文件,而不删除源文件本身。

2 硬链接文件   info ln 命令告诉您,硬链接是已存在文件的另一个名字(A "hard link" is another name for an existing file),这多少有些令人困惑。硬连接的命令是   ln -d existfile newfile 硬链接文件有两个限制   1)、不允许给目录创建硬链接;   2)、只有在同一文件系统中的文件之间才能创建链接。   对硬链接文件进行读写和删除操作时候,结果和软链接相同。但如果我们删除硬链接文件的源文件,硬链接文件仍然存在,而且保留了愿有的内容。     这时,系统就“忘记”了它曾经是硬链接文件。而把他当成一个普通文件。

二  两者之间的区别 硬连接指通过索引节点来进行的连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。     在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件才会被真正删除。 软链接文件有点类似于Windows的快捷方式。它实际上是特殊文件的一种。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

软链接也有硬链接没有的缺点,因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到了;还有它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径。

硬链接就没有上面的缺陷,你想怎么移就怎么移

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • C语言编译全过程剖析

    C语言编译的整个过程是非常复杂的,里面涉及到的编译器知识、硬件知识、工具链知识都是非常多的,深入了解整个编译过程对工程师理解应用程序的编写是有很大帮助的,希望大...

    阳光岛主
  • Google的编程样式

    本文分享了Google众多编程语言的样式指南,其中包括C语言、C++、Objective-C、Python、HTML/CSS、JavaScript、XML、R语...

    阳光岛主
  • Linux Make(Makefile)由浅入深的学习与示例剖析

    经过长时间学习和研究linux GNU make工程管理器 ,现在把学习心得与大家分享一下,希望本文能教会您一些有用的东西。

    阳光岛主
  • 命令ln的使用 以及 查看软件是否安装

    这是linux中一个非常重要命令,请大家一定要熟悉。它的功能是为某一个文件或目录在另外一个位置建立一个同步的链接,类似Windows下的超级链接。 这个命...

    bear_fish
  • Linux下软链接和硬链接的区别

    1)默认不带参数情况下,ln命令创建的是硬链接,带-s参数的ln命令创建的是软链接。 2)硬链接文件与源文件的inode节点号相同,而软链接文件的inode节...

    二狗不要跑
  • 锋利的JQuery —— 选择器

    图片猛戳链接 ?

    用户1154259
  • 短链接原理

      顾名思义,短链接即是长度较短的网址。通过短链接技术,我们可以将长度较长的链接压缩成较短的链接。并通过跳转的方式,将用户请求由短链接重定向到长链接上去。短链接...

    田小波
  • 软链接与硬链接的区别

    由于硬链接是有着相同 inode 号仅文件名不同的文件,因此硬链接存在以下几点特性:

    233333
  • 短链接原理分析

    顾名思义,短链接即是长度较短的网址。通过短链接技术,我们可以将长度较长的链接压缩成较短的链接。并通过跳转的方式,将用户请求由短链接重定向到长链接上去。短链接主要...

    芋道源码
  • 锋利的JQuery —— DOM操作

    图片猛戳链接 ?

    用户1154259

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动