在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号。文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存在,从而实现文件的快速访问。

链接是一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法。Linux中包括两种链接:硬链接(Hard Link)和软链接(Soft Link),软链接又称为符号链接(Symbolic link)。符号连接相当于Windows下的快捷方式。

一、硬链接

硬链接说白了是一个指针,指向文件索引节点,系统并不为它重新分配inode。可以用:ln命令来建立硬链接。

语法:

ln [options] existingfile newfile(sexistingfile 待建立链接文件的文件,newfile是新创建的链接文件)

ln [options] existingfile-list directory

-f 建立时,将同档案名删除.

-i 删除前进行询问.

ln -s abc cde 建立abc 的软连接

ln abc cde 建立abc的硬连接,

用法:

第一种:为”existingfile”创建硬链接,文件名为”newfile”。

第二种:在”directory”目录中,为”existingfile-list”中包含的所有文件创建一个同名的硬链接。

常用可选[options] –f 无论”newfile”存在与否,都创建链接。-n 如果”newfile”已存在,就不创建链接。

下面举一些例子:

[root@rekfan.com test]# ls -il

总计 0

1491138 -rw-r–r– 1 root root 48 07-14 14:17 file1

1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2

[root@rekfan.com test]# ln file2 file2hand

[root@rekfan.com test]# ls -il

总计 0

1491138 -rw-r–r– 1 root root 48 07-14 14:17 file1

1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2

1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand

[root@rekfan.com test]#

注意在创建链接前,file1 显示的链接数目为1,创建链接后file1和file1hard的链接数目都变为2;file1和file1hard在inode号是一样的file1和file1hard显示的文件大小也是一样。可见进行了ln命令的操作结果:file1和file1hard是同一个文件的两个名字,它们具有同样的索引节点号和文件属性,建立文件file1的硬链接,就是为file1的文件索引节点在当前目录上建立一个新指针。你可以删除其中任何一个,如rm file2 ,每次只会删除一个指针,链接数同时减一,当链接数减为0时,内核才会把文件内容从磁盘上删除。

还可以在不同目录,但同一文件系统中建立文件的硬链接。设file1、file2在目录/home/root/dir1中,下面的命令,在/home/root中建立file2的硬链接。

ln file2 /home/root/file2hard

下面的程序,是将dir1目录中所有文件,在目录dir2中建立硬链接

#mkdir dir2

#ln /home/root/dir1/* /home/root/dir2

如果使用了 ln –f existingfile newfile,如果newfile已经存在,则无论原来newfile是什么文件,只用当前用户对它有写权限,newfile就成为exisitngfile的硬链接文件。

尽管硬链接节省空间,也是Linux系统整合文件系统的传统方式,但是存在一下不足之处:

(1)不可以在不同文件系统的文件间建立链接

(2)只有超级用户才可以为目录创建硬链接。

二、软链接(符号链接)

软链接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符号链接。因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件进行链接。

建立软链接,只要在ln后面加上选项 –s,下面举个例子

[root@rekfan.com test]# ls -il

总计 0

1491138 -rw-r–r– 1 root root 48 07-14 14:17 file1

1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2

1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand

[root@rekfan.com test]# ln -s file1 file1soft

[root@rekfan.com test]# ls -il

总计 0

1491138 -rw-r–r– 1 root root 48 07-14 14:17 file1

1491140 lrwxrwxrwx 1 root root 5 07-14 14:24 file1soft -> file1

1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2

1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand

从上面链接后的结果可以看出来软链接与硬链接,区别不仅仅是在概念上,在实现上也是不同的。区别:硬链接原文件&链接文件公用一个inode号,说明他们是同一个文件,而软链接原文件&链接文件拥有不同的inode号,表明他们是两个不同的文件;在文件属性上软链接明确写出了是链接文件,而硬链接没有写出来,因为在本质上硬链接文件和原文件是完全平等关系;链接数目是不一样的,软链接的链接数目不会增加;文件大小是不一样的,硬链接文件显示的大小是跟原文件是一样的,这用强调,因为是等同的嘛,而这里软链接显示的大小与原文件就不同了,file1大小是48B,而file1soft是5B,这里面的5实际上就是“file1”的大小。

总之,建立软链接就是建立了一个新文件。当访问链接文件时,系统就会发现他是个链接文件,它读取链接文件找到真正要访问的文件。

在不同系统之间建立软链接、对目录建立链接,这里就不举例了,读者可以自己去尝试,我也是在不断实践中学习的。

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

补充一下:可以通过symlink来查看链接文件,可以用 man symlink来学习。

三、删除链接

有创建就有删除

rm -rf symbolic_name 注意不是rm -rf symbolic_name/

[root@rekfan.com test]# ls -il

总计 0

1491138 -rw-r–r– 1 root root 0 07-14 14:17 file1

1491140 lrwxrwxrwx 1 root root 5 07-14 14:24 file1soft -> file1

1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2

1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand

[root@rekfan.com test]# rm -rf file1soft

[root@rekfan.com test]# ls -il

总计 0

1491138 -rw-r–r– 1 root root 0 07-14 14:17 file1

1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2

1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand

[root@rekfan.com test]#

————————————

linux 软连接和硬链接的区别:

————————————

4点不同 :

(1)软连接可以 跨文件系统 ,硬连接不可以 。

实践的方法就是用共享文件把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删除链接和连接对象,linux 链接的使用 创建和删除符号连接(软、硬链接)...相关推荐

  1. Linux 文件系统 软/硬链接文件

    文件系统 文件系统就是磁盘上管理文件的系统,一个硬盘有两个分区,一个是swap交换分区,是当内存不够用时将这个分区当做交换内存来使用:一个是filesystem文件系统分区,用来存储管理文件的: 文件 ...

  2. linux 如何打包分区文件,Linux基础------文件打包解包---tar命令,文件压缩解压---命令gzip,vim编辑器创建和编辑正文件,磁盘分区/格式化,软/硬链接...

    作业一: 1)将用户信息数据库文件和组信息数据库文件纵向合并为一个文件/1.txt(覆盖) cat /etc/passwd /etc/group > /1.txt 2)将用户信息数据库文件和用户 ...

  3. Linux与windows的软/硬链接

    Linux的软硬链接(转载部分) 1.Linux链接概念 Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).默认情况下,ln命令产生硬链 ...

  4. linux创建文件软链接命令,Linux创建文件或目录软链接、硬链接的技巧

    有时Linux用户们为了使用方便,会想给电脑中的文件或目录创建软链接或硬链接.不过有些用户不清楚该怎么给这些文件或目录创建软链接或硬链接该怎么办呢?别急,现在小编就来教你解决的方法. 解决方法: 当我 ...

  5. mysql删除数据表show_数据库与表显示、创建、删除

    数据库与表显示.创建.删除 数据库显示 show databases; mysql> show databases; +--------------------+ | Database      ...

  6. linux创建管道的函数,Linux下的有名管道(03)---使用函数创建和删除有名管道

    环境:Vmware Workstation:CentOS-6.4-x86_64 说明: 1.创建管道的时候,使用的函数:int mkfifo(const char *pathname, mode_t ...

  7. ln创建、删除软/硬链接

    待整理.... 转载于:https://www.cnblogs.com/wangcp-2014/p/6657016.html

  8. mysql创建删除触发器的时候_mysql触发器简介及如何创建和删除触发器

    什么是mysql触发器 需要MySQL 5 对触发器的支持是在MySQL 5中增加的.因此,本章内容适用于MySQL 5或之后的版本. MySQL语句在需要时被执行,存储过程也是如此.但是,如果你想要 ...

  9. LINUX 硬链接与软链接的区别

    对于一个文件来说,有唯一的索引接点(inode)与之对应,而对于一个索引接点号,却可以有多个文件名与之对应.因此,在磁盘上的同一个文件可以通过不同的路径去访问该文件.注意在Linux下是一切皆文件的啊 ...

最新文章

  1. 姚期智施尧耘获FOCS 2021时间检验奖,MIT华人学霸毛啸摘最佳学生论文奖
  2. 您的数据中心UPS电池开关不能再选错和接错了
  3. [原创]windows server 2012 AD架构 试验 系列 – 5 AD备份与还原
  4. html 删除记录,添加删除记录.html
  5. 数据泄漏防御在企业的应用
  6. securecrt是什么工具_比较一下几款常用的SSH工具
  7. python嵌套列表字典_python中嵌套列表转为字典
  8. Java基础提升高级API
  9. 【洛谷】【堆+贪心】P1484 种树
  10. python判断文件后缀_python判断文件夹内是否存在指定后缀文件的实例
  11. python 图表工具_7 款 Python 数据图表工具的比较
  12. 阿里云高级技术专家彦林:云原生架构下的微服务演进
  13. c++模板类_在 MCU 上使用 C++ 之模板类进阶与线性 Kalman 算法代码
  14. keil安装及mdk
  15. (项目笔记)opencv人脸识别
  16. cisco命令防ping_ACL配置禁止PING
  17. ubuntu安装nginx详细步骤
  18. python投票问题,程序列出在python中获得多数投票的候选人
  19. css媒体查询来兼容
  20. 不忘初心,不负韶华,17款迈巴赫S400升级20款迈巴赫S680包围

热门文章

  1. oracle服务端导出/导入方式expdp/impdp
  2. Mybatis 单独项目
  3. mac机器下远程仓库添加完毕之后,却无法上传应有的内容。
  4. [开源]STM32F103RBT6最小系统,LEDx2,KEYx4
  5. 35岁是青春的后期你最好把下面十件事做好
  6. 异步复位同步释放机制-系统完美稳定
  7. Linux学习第一篇之Linux系统安装——系统分区
  8. 【CNN】 吴恩达课程中几种网络的比较
  9. 不光是查找值!二分搜索
  10. node.js中ws模块创建服务端和客户端,网页WebSocket客户端