在学习linux的过程中,我经常把软硬链接,所以今天专门查了一些资料,然后整合在自己的博客中,方便以后复习,查看。

一方面也是因为看了vamei的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的快捷方式。它实际上是特殊文件的一种。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

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

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

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

详细的介绍:

硬连接指向的是节点(inode),是已存在文件的另一个名字,修改其中一个,与其连接的文件同时被修改;对硬链接文件进行读写和删除操作时候,效果和软链接相同。但如果我们删除硬链接文件的源文件, 硬链接文件仍然存在,而且保留了原有的内容。这时,系统就“忘记”了它曾经是硬链接文件,而把他当成一个普通文件。 硬链接文件有两个限制: 1、不允许给目录创建硬链接; 2、只有在同一文件系统中的文件之间才能创建链接。

软链接指向的是路径,又叫符号链接,这个文件包含了另一个文件的路径名可以是任意文件或目录,还可以链接不同文件系统的文件,和win下的快捷方式差不多。软链接文件甚至可以链接不存在的文件,这就产生一般称之为"断链"的问题(或曰“现象"),链接文件甚至可以循环链接自己,类似于编程语言中的递归。

示例:

ln exitfile newfile

ln -s exitfile newfile

这里的newfile为创建的链接名字,第一个没有参数,默认是硬链接,第二个 -s 表示是软链接。

ls -il 可以查看文件的inode号等属性,例如:

[root@server tmp]# touch file

[root@server tmp]# ln file file1

[root@server tmp]# ln -s file file2

[root@server tmp]# ls -il

total 0

27127 -rw-r--r--. 2 root root 0 Nov 20 10:40 file

27127 -rw-r--r--. 2 root root 0 Nov 20 10:40 file1

27132 lrwxrwxrwx. 1 root root 4 Nov 20 10:40 file2 -> file

在 /tmp 目录下,创建名为file的文件,先后创建硬链接file1,软链接file2.观察ls -il的输出

file 和 file1 的inode是一样的,所以可以说硬链接是指针指向同一个inode,系统并不为他重新分配inode。file2指向file,说明file2是软链接,inode号也发生变化,

若删除原始文件file,硬链接继续使用,但软链接就失效了。这点与win下的快捷方式类似。

这里需要强调的是,ls -l 命令输出中的第3个字段内容,此为inode链接数,只要不为0,对于硬链接来说,文件就一直存在,不管你删的是源文件还是之前生成的硬链接。

linux硬连接脚本,linux 硬链接和软链接深入理解相关推荐

  1. 软连接和硬连接(Linux创建软连接一定要用绝对路径)

    一.Linux连接文件 Linux有两种连接文件:符号连接(软连接)和硬链接,符号链接类似Windows下的快捷方式.硬链接通过文件系统的inode连接来产生新文件名,而不是产生新文件. inode: ...

  2. linux 命令连接符,Linux 中命令链接操作符的十个最佳实例

    Linux 中命令链接操作符的十个最佳实例 日期:2017-12-14 浏览:1416次 评论:0条 侧边栏 英文:Tecmint,翻译:Linux中国/geekpi https://linux.cn ...

  3. linux du -sh 脚本,Linux之shell脚本(2)

    Linux之shell脚本(2) 一.printf命令: printf是一个把从标准输入的字符按照你所要求的格式输出到标准输出即屏幕的命令.在很多时候,我们可能需要将自己的数据给他格式化输出的. 1. ...

  4. linux内核优化脚本,linux内核高级优化脚本

    linux内核高级优化脚本 可以用于hadoop生态圈环境的组件安装 linux内核调优 具体的每一步的解释请参考 03搭建cdh 备注:使用与centos6和centos7两个系统版本执行 [[em ...

  5. linux获取随机数脚本,Linux下对拍脚本与随机数生成器

    对拍脚本 新建一个文档 check.sh 作为对拍脚本. #!/bin/bash while(true)do #死循环 ./data > .in #运行数据生成器,将数据输出到1.in ./st ...

  6. linux执行命令脚本,Linux - 执行命令与脚本

    01 - Linux执行多条命令 方法1:在命令行下可以一次性粘贴多条语句,shell会依次执行并输出结果 方法2:在一个命令行中,用分号将各个命令隔开或者使用&&连接各个命令 示例: ...

  7. linux防火墙shell脚本,Linux系统目录结构,Shell脚本;关闭和开启防火墙

    Linux系统目录结构 目录 描述 备注 /bin a.存放着最经常使用的命令 b.可执行文件,用户命令 c.构建最小系统所需要的命令 /boot a.内核与启动文件 b.系统启动相关文件 c.启动L ...

  8. linux mint17连接wifi,Linux Mint 17 + 小米WIFI创建手机热点

    转载:http://www.pppei.net/blog/post/690 亲测可行! 我的系统是linux mint 17.1 64位,所用wifi位小米WIFI. 以下是原文: 此方法在linux ...

  9. linux 内核连接跟踪,Linux内核连接跟踪锁的优化分析(1)

    Linux内核连接跟踪锁的优化分析(1) 作者:gfree.wind@gmail.com 博客:linuxfocus.blog.chinaunix.net 微博:weibo.com/glinuxer ...

最新文章

  1. Github标星24k,127篇经典论文下载,这份深度学习论文阅读路线图不容错过
  2. 原理篇 | 推荐系统之矩阵分解模型
  3. mysql给数据量大的表添加索引的办法
  4. Flink的Table和SQL的基本API
  5. Scrapy 导出的 cvs 文件,双击打开乱码问题
  6. 线性时间选择—寻找第k小的数(分治算法)
  7. Swift:快速上手攻略
  8. matlab pi调节器,pi调节器的输入和输出_pi调节器的传递函数
  9. 使用批处理进行批量重命名
  10. 30个编程领域的趣图
  11. 台式计算机时间不能同步,电脑时间同步不了怎么办
  12. ones/测试工程师面试
  13. 在深圳,想转行学IT到...
  14. 字节、快手、天弘基金等 :量化/算法工程师岗位【社招|校招|实习生】
  15. 原来做炫酷图表这么容易
  16. 视网膜竞争(双目竞争)现象
  17. 爱回收急于IPO背后:创始人提前减持,路径像极了“优信”
  18. 【观察】企业级开源软件大时代,PingCAP的格局与胜局
  19. 地貌学类毕业论文文献都有哪些?
  20. 分享几款有意思的阅读工具

热门文章

  1. WPF程序模彷Windows7的桌面任务栏
  2. DeleteCommand属性---删除数据集指定的行保存到数据源中
  3. hdu 1872 稳定排序
  4. IOCP线程池的开发-(1)
  5. Flash背景透明的代码
  6. 信息学奥赛一本通(1134:合法C标识符查)
  7. 求最大公约数问题(信息学奥赛一本通-T1207)
  8. 理论基础 —— 排序 —— 基数排序
  9. 高精除(信息学奥赛一本通-T1308)
  10. 信息学奥赛一本通C++语言——1127:图像旋转