Linux基础知识之软硬链接

系统环境:

   该博文以CentOS6.8_x86_64系统为基础,Xshell5远程登录CentOS6.8系统,以root身份登录系统。

为什么要学习符号(软)链接和硬链接?

   符号(软)链接和硬链接是Linux文件系统中的一个重要的概念,软硬链接的学习过程中会涉及一些文件系统中的索引节点(inode),索引节点是虚拟文件系统上的非常重要的知识,我们通过分析和学习软链接和硬链接的区别,可以更好利用软硬链接的知识去分析文件系统,更好的去理解Linux系统的原理,使用软硬链接会更加缩小系统,还有就是可以更加方便的去移值Linux系统(绝对路径和相对路径的使用会更加方便的进行系统的移值)。

   硬链接(Hard Link)的分析:

    课件的解析:blob.png

    硬链接的详细解析:

    硬链接是通过索引节点来进行连接文件的。在Linux系统之中,保存在磁盘分区中的文件都有一个单一的inode号(因为Linux一切皆文件,不管什么类型的文件,都会对应一个Linux的节点号,※磁盘上的每一个分区都会有一套自己的inode编号,等分析inode的博客会详细的讲解这些知识)。在Linux之中,多个文件名或单个文件名会通过单一的索引节点指向每一个单一的文件。硬链接的作用是允许一个文件拥有多个有效路径名,这样每一个用户都会将一些重要文件通过硬链接生成多个文件名,可以防止用户删除某一个文件名,而导致删除整个文件的链接关系被删除,导致文件被删除,建立链接的关系之后,删除单一的硬链接,文件系统的对应关系都不会被删除,只有当文件的最后一个硬链接被删除之后,文件才会被删除,这样简单的备份即不用另外使用太多另外的磁盘空间,而做到防止“误删”的功能。真正的文件删除的条件是与之相关的所有的硬件接文件均被删除,文件才会被删除,文件的数据块和目录的连接才会被释放。

   硬链接的语法和命令的使用实例:

        ln filename [linkname ]

   实例分析:

      a.创建一个文件名为f1的文件;
      b.将how are you? 通过输入重定向写入f1文件中;

      c.给f1文件创建一个名为f2的硬链接;

      d.使用ls -i 查看f1文件和f2文件的inode号,显示为同一个inode号(11);

      e.删除文件f1;

      f.查看f2中的内容,发现和f1中的内容相同,说明f1和f2互为相互的硬连接。

  blob.png

   符号(软)链接(Symbolic Link)的分析:

      课件的解析:

blob.png

    语法:

       ln -s filename [linkname]

    符号链接的详细解析:

             a.linux下的软链接类似于windows下的快捷方式

             b.假设b文件是a文件的软链接,当我们打开b文件实际通过b文件的链接指向的是a文件,确切的说我们最后打开的b文件是通过a文件的inode打开的文件。与此不同的是,b文件是a文件的硬链接的话,其实都是通过相同的inode打开文件。

              c.当b目录为a目录的软链接的时候,进入b目录,但实际上进入的是a目录。

              d.软连接的两个文件的inode号是不相同的,硬链接的两个inode号是相同的。

              e.软链接文件a和b的权限是不相同的,硬链接的a和b文件的权限是相同的。   

              f.当创建软连接时,a文件和它的软连接b不再同一目录时,一定要说明软链接b对于文件a的相对路径(相对路径是相对于软链接文件的路径,而不是现对于当前目录的路径),或者直接指明绝对路径。(※在真正的系统中,软链接多数使用的是指定的相对路径,而不是绝对路径,使用相对路径便于文件和链接文件的移值性※)

              g.默认创建软连接的时候,认为创建的链接文件和目标文件是在同一目录。

    符号(软)链接实例:

      a.新建文件f1,创建f1的软链接f2.(f1 f2 文件的inode号不同,f2 指向f1 文件)

      blob.png

      b.在root目录下创建文件f1,对文件f1分别在/testdir/目录下,利用下面三种方法创建软链接f1、f2、f3。我们可以发现,f1是错误的,f2、f3都是正确的,f2使用的是绝对路径的创建软链接(在本地系统使用无障碍,但是移值系统之后,可能会造成软链接无法使用),f3是使用的相对路径创建的软链接。(※相对路径是相对于软链接文件的路径,而不是现对于当前目录的路径※,增强文件跟随系统的移值性。)

      blob.png

原创文章,作者:sjsir,如若转载,请注明出处:http://www.178linux.com/26682

赞 (0)
sjsirsjsir
上一篇 2016-08-02 10:53
下一篇 2016-08-02 10:54

相关推荐

  • Shell脚本编程初步

        shell是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。shell脚本(shell script),是一种为shell编写的脚本程序。业界所说的shell通常都是指shell脚本,但shell和shell script是两个不同的概念。shell编程跟java、php编程…

    Linux干货 2016-08-24
  • Linux系统结构 详解

    Linux系统一般有4个主要部分: 内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。部分层次结构如图1-1所示。  1. linux内核         内核是操作系统的核心,具有很多最基本功能,它负责管理系…

    Linux干货 2015-04-13
  • Nginx配置与应用详解

    前言 Nginx是由俄罗斯软件工程师Igor Sysoev开发的一个高性能的HTTP和反向代理服务器,具备IMAP/POP3和SMTP服务器功能。Nginx最大的特点是对高并发的支持和高效的负载均衡,在高并发的需求场景下,是Apache服务器不错的替代品。目前,包括新浪、腾讯等知名网站都已使用Nginx作为Web应用服务器。本文带来的是Nginx配置与应用详…

    Linux干货 2015-06-15
  • Linux系统初始化流程:系统初始化相关基础知识

    Linux系统初始化流程:系统初始化相关基础知识 内核简介 内核的功能 进程管理:通过task_struct, scheduler 实现 内存管理 I/O管理:中断以及中断处理 文件系统管理:ext3,ext4,xfs 等 驱动程序 安全相关:SELinux,各种加密库 通用软件,平台相关软件 内核设计流派 单内核:单一体系结构 linux 为单一内核 模块…

    2015-02-28
  • Puppet 的使用与进阶

    Puppet 基于puppet 可实现自动化重复任务, 快速部署关键性应用以及在本地或云端完成主动管理变更和快速扩展架构规模.基于master/agent 模型. 基于RPC 的通信, 基于xml 进行数据交换 define : 使用puppet 语言来定义资源的状态模拟 : 根据资源关系图, puppet 可以模拟部署无损运行测试代码强制 : 对比客户端主…

    2016-12-04
  • LAMP运行环境搭建及部署php程序软件

    前言     Linux+Apache+MySQL+PHP是大多数web服务器的运行环境,能熟练配置此运行环境是每个运维的必备基本技能,本文以安装MySQL管理工具PHPmyadmin以及博客软件wordpress为例,演示编译安装LAMP运行环境的过程。 一、实验拓扑图 二、安装步骤 2.1 编译安装Apache h…

    2015-11-26