2017-07-03 13:26:20 Lockey23 阅读数 559
  • uboot学习前传-2.1.uboot和系统移植第1部分

    本期课程为uboot学习的前导课程,主要目标是向大家引入uboot并让大家学会使用uboot,包括uboot的工作方式、环境变量、常用命令、uboot和主机的网络连接等。学完本课程将可以使用uboot(虽然还不懂原理)

    11379 人正在学习 去看看 朱有鹏

首先我们来将ln命令的手册进行简要翻译解释

名称

   ln - 在文件或目录之间创建连接

用法简介

   ln [选项/参数]... [-T] 目标 连接名称   (形式1)
   ln [选项/参数]... 目标                  (形式2)
   ln [选项/参数]... 目标... 目录     (形式3)
   ln [选项/参数]... -t 目录 目标...  (形式4)

描述

  • 在形式1中,使用指定的连接名称为目标文件或目录创建一个连接
  • 在形式2中,在当前目录中创建一个目标文件或者目录的连接
  • 在形式3和4中,在目录中为每一个目标文件或者目录创建连接
    默认创建硬连接,创建软连接使用 –symbolic. 当创建硬连接时每一个目标是必须存在的, 软连接可以是任意文本,如果稍后解析,则将相对连接理解为与其父目录相关的连接。
参数解释
   --backup[=CONTROL]
          将在链结时会被覆写或删除的档案进行备份
   -b     类似 --backup 但是不接受参数
   -d, -F, --directory
          允许超级用户尝试硬链接的目录(注意:
          就算是超级用户也可能会因为系统限制而导致操作失败)
   -f, --force
          删除已经存在的目的文件
   -i, --interactive
          提示是否删除目的文件
   -L, --logical
          为软连接参考创建硬连接
   -n, --no-dereference
          视一个目录的符号链接为目的的目录为一般文件
   -P, --physical
          为软连接直接创建硬连接
   -s, --symbolic
          创建软连接而不是硬连接
   -S, --suffix=SUFFIX
          替换通常的备份文件后缀,使用自定义后缀
   -t, --target-directory=DIRECTORY
          明确指出要创建连接的目录
   -T, --no-target-directory
          视指定连接名称为一般文件
   -v, --verbose
          打印每一个连接文件名称

【硬连接】会在你选定的位置上生成一个和源文件大小相同的文件
硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。

【软连接】只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间
另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

两种链接的区别:

 硬链接文件有两个限制

   1)、不允许给目录创建硬链接;
   2)、只有在同一文件系统中的文件之间才能创建链接,而且只有超级用户才有建立硬链接权限。
   对硬链接文件进行读写和删除操作时候,结果和软链接相同。但如果我们删除硬链接文件的源文件,硬链接文件仍然存在,而且保留了愿有的内容。
这时,系统就“忘记”了它曾经是硬链接文件。而把他当成一个普通文件。
那么我们就可以这样理解:硬连接指通过索引节点来进行的连接,其作用是允许一个文件拥有多个有效路径名,能够达到误删除的作用。
其原因是因为对应的文件的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。文件才会被真正删除。
注:保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index即I节点)。
软链接没有硬链接以上的两个限制,因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件进行链接。但是软链接的缺点在于:因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到了,而硬链接就没有这个缺陷,你想怎么移就怎么移;还有它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径。

实际演示

  • 同一个目录下创建文件软连接
    这里写图片描述
  • 不同目录下创建软连接(1是因为未使用绝对路径导致软连文件不可操作,2为成功的操作)
    1
    这里写图片描述
    2
    这里写图片描述

  • 为目录创建软连接,切记不同目录下要使用绝对路径
    这里写图片描述
    硬连接因为不太常用就不做演示,如有需要可以自己尝试,但是要牢记软连接和硬连接各自的特点以及二者的区别

2019-09-19 14:02:22 top_explore 阅读数 42
  • uboot学习前传-2.1.uboot和系统移植第1部分

    本期课程为uboot学习的前导课程,主要目标是向大家引入uboot并让大家学会使用uboot,包括uboot的工作方式、环境变量、常用命令、uboot和主机的网络连接等。学完本课程将可以使用uboot(虽然还不懂原理)

    11379 人正在学习 去看看 朱有鹏

ln -s 源文件 目标文件

示例:

创建一个快捷方式/软连接 tempfile 指向源文件srcFile

ln -s srcFile tempfile

2019-09-18 08:57:01 qq_38603049 阅读数 50
  • uboot学习前传-2.1.uboot和系统移植第1部分

    本期课程为uboot学习的前导课程,主要目标是向大家引入uboot并让大家学会使用uboot,包括uboot的工作方式、环境变量、常用命令、uboot和主机的网络连接等。学完本课程将可以使用uboot(虽然还不懂原理)

    11379 人正在学习 去看看 朱有鹏

什么是软连接,其实就是别名,简单的理解就是相当于windows的快捷方式。

 

ln -s /opt/dir /tmp/ddd

命令行格式如下:
ln  -s  源目录 目标软连接

进入软连接

cd /opt/dir

 

 

实际上ddd这个软连接就相当于/opt/dir了

2019-09-30 09:37:39 duqiming 阅读数 56
  • uboot学习前传-2.1.uboot和系统移植第1部分

    本期课程为uboot学习的前导课程,主要目标是向大家引入uboot并让大家学会使用uboot,包括uboot的工作方式、环境变量、常用命令、uboot和主机的网络连接等。学完本课程将可以使用uboot(虽然还不懂原理)

    11379 人正在学习 去看看 朱有鹏

软连接说明

在Windows系列中,我们称其为快捷方式,在Linux中我们称其为链接

创建软链接

ln -s [源文件或目录] [目标文件或目录]

例如:

ln –s  /opt/test/test  test

当前路径创建test 引向/opt/test/test 文件夹

ln –s  /opt/test/test   /opt/test 

创建/opt/test 引向/opt/test/test 文件夹

删除软链接

和删除普通的文件是一眼的,删除都是使用rm来进行操作

rm –rf 软链接名称

正确:

rm –rf yourfile

错误:

rm –rf yourfile/

切记后面不能加“/”,加和不加是两种意思,可以百度查一下

修改软链接

ln –snf [新的源文件或目录] [目标文件或目录]

这将会修改原有的链接地址为新的地址

例如:

创建一个软链接

ln –s  /opt/test/test   /opt/test

修改指向的新路径

ln –snf  /opt/test/test1   /opt/test
2013-07-14 13:52:03 ljianhui 阅读数 5860
  • uboot学习前传-2.1.uboot和系统移植第1部分

    本期课程为uboot学习的前导课程,主要目标是向大家引入uboot并让大家学会使用uboot,包括uboot的工作方式、环境变量、常用命令、uboot和主机的网络连接等。学完本课程将可以使用uboot(虽然还不懂原理)

    11379 人正在学习 去看看 朱有鹏
一、Linux下的两种连接文件及创建方式
在Linux下面的连接文件有两种——软连接和硬连接,虽然都是连接文件,但两者却有很大的区别。一种是类似于Windows的快捷方式功能的文件(或目录),这种连接称为软连接;另一种则是通过文件系统的inode连接来产生新文件名,而不是产生新文件,这种称为硬连接。

创建连接文件的方法非常简单,就是使用ln命令,ln file1 file2,则创建硬连接,file2为file1的硬连接,ln -s file1 file2,则创建软连接,file2为file1的软连接。

二、详述硬连接
为了让大家更好地了解这两种连接的差别,这里先说说硬连接吧,因为它比软连接要难理解一些。

我们知道,在Linux下,每个文件都会占用一个inode,文件内容由inode的记录来指向,而想要读取文件,必须要经过目录记录的文件名来指向正确的inode号码才能读取,也就是说,其实文件名只与目录有关,但是文件的内容则与inode有关。

那什么硬连接呢?就是在某个目录下新建一条文件名连接到某inode号码的关联记录而已,简单来说,就是有多个文件名对应到同一个inode号码,注意,是多个文件名,不是多个文件。

看到这里可能你也是一头雾水,那么请看下面的例子吧


在这里我创建了一个硬连接,并查看了相关文件的inode,从结果可以看出,这两个文件的inode是完全相同的(394220),而文件连接数则不是1而是2,而且crontab的文件类型是“-”而不是“l”,即它不是一个连接文件,这是因因为有两个文件连接到了同一个文件/etc/crontab啊。为什么会如此神奇,就用下面的图来解释一下吧



从图中可以看到,你可以通过1或2的目录inode所指定的block找到两个不同的文件名,而不管使用哪个文件名均可以找到real这个inode,并通过这个inode去读取到最终的数据。

一般来说,使用硬连接(hard link)设置连接文件,磁盘的空间与inode的数目是不会变的,它只是在某个目录下的block多写入一个关联数据而已,既不会耗用inode也不会耗用block数量。

可能你会反驳说,不对,建立/root/crontab的那个文件不也需要一个inode和blocks吗?如图中的inode1不就是建立这个连接所要用的一个inode吗?其实不是这样理解的,因为/root这个目录早已在,而它里面的内容也早已记录在这个block中,即无论你添加还是不添加一个硬连接inode1和它所指向的那个目录的block都已经存在了,你建立的硬连接只是在这个inode1所指向的block中添加一条文件名的记录而已,在这个例子中,就是添加/root/crontab这条记录。所以没有增加inode和block的耗用。

三、详述软连接
相对于硬连接,软连接(symbolic link)就更好理解了,基本上软连接就是在创建一个独立的文件,而这个文件会让数据的读取指向指向它连接的那个文件的文件名。即只是利用文件来作为指向的操作,所以,当源文件被删除后,软连接会“打不开”,出现的情况就像大家熟悉的Windows中那样,提示“无法打开某个文件”。

请看下面的例子


我创建了一个软连接,从输出的结果中,我们可以看出它与硬连接的确是非常的不同。首先,这两个文件的inode号码并不相同,再者在文件类型方面,/etc/crontab为“-”,即普通的文件,而/root/crontab_sl则为“l”,即连接文件。

那软连接文件,即此例子中的crontab_sl文件里面的内容是什么呢?大家可以看到它的大小只12B,其实它的内容就是“/etc/crontab”这12个字符而已。

还不是很明白?那就用下面的图来说明吧


上图表示,由inode1读取到连接文件的内容仅有文件名,根据文件名连接到正确的目录去取得目标文件的inode,最终就能够读取到正确的数据了。

从上面的输出结果中,大家应该已经看到软连接是要耗用inode和block的(因为inode号与源文件的inode不相同),对应上图就是耗用了inode1和它所指向的block,它与硬连接的不同之处在于,inode1在创建这个软件文件之前是没有被使用的inode,它不指任何的block,也是说图中它所指向的block也不没有被利用的。当要创建软连接时,inode1和它所指向的block才被利用了。而且这个block不是用来记录文件名的,而是真真正正的一个文件,用来记录文件信息,例如这里它的信息是“/etc/crontab”这12个字,它是放在目录/root下的文件。

四、软连接与硬连接优缺点分析
1、硬连接
硬连接比较安全,因为即使某一个目录下的关联数据被删除了也没有关系,只要有任何一个目录下存在着关联数据,那么该文件就不会被删除,而且硬连接还不需要耗用inode和block,但是硬连接也有其限制,就是不能跨文件系统也不能连接到目录。

注:在硬连接中,删除文件时,只有当连接数为0时,才能文件真正删除,否则只会把文件的连接数减1。

2、软连接
软件连接比较灵活,可以连接到文件和目录,但是它会耗用inode和block,不过这对于系统来说其实不算什么,但是如果目标文件被删除了,从最后一幅图可以看出,整个环节就会无法继续下去,会发生无法通过连接文件读取的问题。其实软连接就你Windows中的快捷方式一样。

总之:本人觉得硬连接与软连接的一大区别就是硬连接不会创建一个新的文件,而软连接则会创建一个新的文件来,这个文件用来记录它所连接的文件的文件名。

Linux 软连接

阅读数 1454

没有更多推荐了,返回首页