Linux课程笔记 软硬链接

1. 软硬链接的介绍和实践

1.1链接的概念

在linux系统中,链接分为硬链接和软链接。在默认不带参数的情况下,执行ln命令创建的是硬链接。

链接是指通过索引节点来进行链接。在linux系统中,多个文件名指向同一个索引节点是正常且允许的,这种是硬链接。硬链接的作用之一是允许一个文件有多个有效路径防止误删除源数据。

文件系统中,只要文件的索引节点还有一个以上的链接,只删除其中一个链接并不影响索引节点和其他的链接(即数据实体并未删除)。只有当最后一个链接被删除,此时如果有新数据要存储到硬盘时,被删除的文件的数据块及目录的链接才会被释放。

软链接实际上是一个文本文件,这个文件包含有软链接指向灵异文件的位置信息内容。

1.2示例

1.2.1文件示例:


[[email protected] test]# mkdir -p /test/qinbf

[[email protected] test]# cd /test/qinbf/

[[email protected] qinbf]# touch qinbf

[[email protected] qinbf]# ll

总计 4

-rw-r--r-- 1 root root 0 05-27 12:21 qinbf     #------à此时还没有创建链接,链接数为1

[[email protected] qinbf]# ln qinbf qinbf_hard_link  #----------à不加参数,默认创建硬链接

[[email protected] qinbf]# ll

总计 8

-rw-r--r-- 2 root root 0 05-27 12:21 qinbf  #-----------à此时由于硬链接的存在,链接数为2

-rw-r--r-- 2 root root 0 05-27 12:21 qinbf_hard_link

[[email protected] qinbf]# ln -s qinbf qinbf_soft_link

[[email protected] qinbf]# ll

总计 12

-rw-r--r-- 2 root root 0 05-27 12:21 qinbf

-rw-r--r-- 2 root root 0 05-27 12:21 qinbf_hard_link

lrwxrwxrwx 1 root root 5 05-27 12:22 qinbf_soft_link -> qinbf

[[email protected] qinbf]# ll -rti

总计 24

1409027 -rw-r--r-- 2 root root    0 05-27 12:21 qinbf_hard_link

1409027 -rw-r--r-- 2 root root    0 05-27 12:21 qinbf  #---à对边,发现qinbf文件和其硬链接文件的inode号是一致的

1409028 lrwxrwxrwx 1 root root    5 05-27 12:22 qinbf_soft_link -> qinbf  #------à而qinbf文件的软链接文件qinbf_soft_link的inode号则与qinbf文件inode号不一致

1409029 drwxr-xr-x 2 root root 4096 05-27 12:22 qinbfdir

1409030 lrwxrwxrwx 1 root root    8 05-27 12:23 qinbfdir_soft_link -> qinbfdir

1.2.2目录示例:


[[email protected] qinbf]# mkdir qinbfdir

[[email protected] qinbf]# ll

总计 20

-rw-r--r-- 2 root root    0 05-27 12:21 qinbf

drwxr-xr-x 2 root root 4096 05-27 12:22 qinbfdir

-rw-r--r-- 2 root root    0 05-27 12:21 qinbf_hard_link

lrwxrwxrwx 1 root root    5 05-27 12:22 qinbf_soft_link -> qinbf

[[email protected] qinbf]# ln qinbfdir qinbfdir_hard_link

ln: “qinbfdir”: 不允许将硬链接指向目录   #--------à目录不允许创建硬链接

[[email protected] qinbf]# ln -s qinbfdir qinbfdir_soft_link  #----------à目录可以创建软链接

[[email protected] qinbf]# ll -rti

总计 24

1409027 -rw-r--r-- 2 root root    0 05-27 12:21 qinbf_hard_link

1409027 -rw-r--r-- 2 root root    0 05-27 12:21 qinbf

1409028 lrwxrwxrwx 1 root root    5 05-27 12:22 qinbf_soft_link -> qinbf

1409029 drwxr-xr-x 2 root root 4096 05-27 12:22 qinbfdir

1409030 lrwxrwxrwx 1 root root    8 05-27 12:23 qinbfdir_soft_link -> qinbfdir

1.2.3内容输入示例:


[[email protected] qinbf]# echo "qinbf is a student" >>qinbf_soft_link

[[email protected] qinbf]# cat qinbf_soft_link

qinbf is a student

[[email protected] qinbf]# cat qinbf_hard_link

qinbf is a student

[[email protected] qinbf]# cat qinbf

qinbf is a student

[[email protected] qinbf]# echo "yes,I do">>qinbf

[[email protected] qinbf]# cat qinbf

qinbf is a student

yes,I do

[[email protected] qinbf]# cat qinbf_hard_link

qinbf is a student

yes,I do

[[email protected] qinbf]# cat qinbf_soft_link

qinbf is a student

yes,I do

结论:无论是在软链接文件或者是硬链接文件还是源文件输入内容,这三种类型的文件内容都是同步的。

1.2.4删除示例:


[[email protected] qinbf]# rm -f qinbf  #-----------à删除源文件

[[email protected] qinbf]# ll -rti

总计 24

1409028 lrwxrwxrwx 1 root root    5 05-27 12:22 qinbf_soft_link -> qinbf[q1]

1409029 drwxr-xr-x 2 root root 4096 05-27 12:22 qinbfdir

1409030 lrwxrwxrwx 1 root root    8 05-27 12:23 qinbfdir_soft_link -> qinbfdir

1409027 -rw-r--r-- 1 root root   28 05-27 12:29 qinbf_hard_link

[[email protected] qinbf]# cat qinbf_soft_link  #------à此时,软链接文件失效

cat: qinbf_soft_link: 没有那个文件或目录

[[email protected] qinbf]# cat qinbf_hard_link  #------à硬链接文件内容还在

qinbf is a student

yes,I do

=============================以下是自己测试补充===========================

[[email protected] qinbf]# touch qinbf  #----------à之前已经删除,重新创建的同名新文件

[[email protected] qinbf]# ll -rti

总计 28

1409028 lrwxrwxrwx 1 root root    5 05-27 12:22 qinbf_soft_link -> qinbf[q2]

1409029 drwxr-xr-x 2 root root 4096 05-27 12:22 qinbfdir

1409030 lrwxrwxrwx 1 root root    8 05-27 12:23 qinbfdir_soft_link -> qinbfdir

1409027 -rw-r--r-- 1 root root   28 05-27 12:29 qinbf_hard_link

1409031[q3]  -rw-r--r-- 1 root root    0 05-27 12:33 qinbf

[[email protected] qinbf]# cat qinbf_soft_link #------àqinbf_soft_link文件和新文件qinbf内容一致,为空

[[email protected] qinbf]# echo "This is new file">>qinbf  #-----à新增文件的内容

[[email protected] qinbf]# cat qinbf_soft_link #-------àqinbf_soft_link文件和新文件qinbf内容一致

This is new file

[[email protected] qinbf]# cat qinbf_hard_link #------à此时qinbf_hard_link文件还是被删除的qinbf文件的内容

qinbf is a student

yes,I do

1.3链接总结

通过以上测试,我们可以得到以下几个结论:

(1)       删除软链接文件,对源文件和硬链接文件没有影响

(2)       删除硬链接文件,对源文件和软链接没有影响

(3)       删除源文件,对硬链接文件无影响,软链接失效

(4)       同时删除源文件,和硬链接文件,整个文件会真正的被删除

(5)       很多硬件设备的快照功能,就是利用了硬链接的原理

(6)       建立与被删除的源文件同名的新文件,软链接文件还是有效,而硬链接无效(inode号不一致),亲测。

对于目录,不可以创建硬链接,但可以创建软链接;目录不能跨越文件系统。

1.4空间不能释放的原因

(1)       硬链接的存在

(2)       另一个进程还在使用这个文件

(3)       磁盘剩余空间维护出现了问题

时间: 2024-08-08 01:24:37

Linux课程笔记 软硬链接的相关文章

Linux中的软硬链接

说到Linux中的软硬链接,就必须谈一下Linux的文件系统的组成的重要部分iNode和block. 首先是iNode,先用一张图了解一下iNode在Linux文件系统中的地位: Linux中的文件的文件名.文件属性和文件的数据是分开存储的.文件名存放在目录项(dentry)中,文件的属性存放在iNode中,而文件的内容,即文件的实际数据存放在block中,而目录只有iNode没有block.一般而言这个iNode的大小为128B,iNode中的内容大致如下:  1.文件的字节数: 2.文件拥有

Linux课程笔记 Day07 课上内容总结 SSH和rsync

一. SSH 1.1    SSH介绍 SSH是Secure Shell Protocol的简称.在进行数据传输之前,SSH先对联机数据包通过加密技术进行加密处理,加密后再进行数据传输.确保了传递的数据安全.SSH是专为远程登录会话和其他网络问题提供安全性的协议. 在默认状态下,SSH协议提供两个服务功能:一个是提供类似telnet远程链接服务器的服务,即上面提到的SSH服务:另一个是类似FTP服务的stp-server,借助SSH协议来传输数据,提供更安全的FTP服务. 特别提醒:SSH客户端

Linux课程笔记 Day03 课程内容总结

1. 软硬链接的介绍和实践 1.1链接的概念 在linux系统中,链接分为硬链接和软链接.在默认不带参数的情况下,执行ln命令创建的是硬链接. 链接是指通过索引节点来进行链接.在linux系统中,多个文件名指向同一个索引节点是正常且允许的,这种是硬链接.硬链接的作用之一是允许一个文件有多个有效路径防止误删除源数据. 文件系统中,只要文件的索引节点还有一个以上的链接,只删除其中一个链接并不影响索引节点和其他的链接(即数据实体并未删除).只有当最后一个链接被删除,此时如果有新数据要存储到硬盘时,被删

Linux课程笔记 Rsync数据同步服务

一 Rsync 1. Rsync介绍 Rsync具有可使本地主机不同分区或目录之间及本地和远程两台主机之间的数据快速同步镜像,远程备份等功能. 在同步备份时,默认情况下,Rsync通过独特的“quick  check”算法,仅同步大小或者最后修改时间发生变化的文件或目录(也可根据权限,属主等变化同步,需要指定参数),甚至是只同步一个文件里有变化的内容部分,所以可实现快速的同步数据的功能. 2. Rsync的特性 支持拷贝特殊文件如链接,设备等 可以排除指定文件或目录同步的功能,相当于打包命令ta

linux基础文件管理软硬链接

一.文件系统的基本结构 1.文件和目录被组成一个单根倒置树目录结构 2.文件系统从根目录下开始,用“/”表示 3.根文件系统(rootfs):root filesystem文件名区分大小写 4.以 . 开头的文件为隐藏文件 5.路径用/隔离 6文件有两类数据:元数据和数据本身7.文件名规则 文件名最多255个字节包括路径在内文件名称最长4095个字节 蓝色-->目录 绿色-->可执行文件 红色-->压缩文件 浅蓝色-->链接文件 灰色-->其他文件 除了斜杠和NUL,所有字符

Linux运维学习笔记-软硬链接知识总结

文件链接   硬链接,通过索引节点来进行链接 硬链接原理图 硬链接的创建: 直接执行命令"ln 源文件 硬链接文件",即可完成创建硬链接. 硬链接知识小结: 1.具有相同Inode节点号的多个文件是互为硬链接文件. 2.删除硬链接文件或者删除源文件任意之一,文件实体并未被删除. 3.只有删除了源文件及所有对应的硬链接文件,文件实体才会被删除. 4.当所有硬链接文件及源文件被删除后,再存放新的数据会占用这个文件的空间,或者磁盘fsck检查的时候,删除的数据也会被系统回收. 5.硬链接文件

Linux C笔记之 链接属性 详解

链接属性: 当组成一个程序的各个源文件分别被编译之后,所有的目标文件以及那些从一个或多个函数库中引用的函数链接在一起,形成可执行程序.然而,如果相同的标识符出现在几个不同的源文件中时,它们是表示同一个实体? 标识符的链接属性决定如何处理在不同文件中出现的标识符.标识符的作用域与它的链接属性有关,但不相同. 链接属性共有3种-- external (外部).internal (内部).none(无): none(无)标识符总是被当成单独的个体,也就是说该标识符的多个声明被当成独立不同的实体. in

Linux课程笔记 Day03 命令总结

egrep [使用权限] 所有使用者 [语法] egrep [选项] [查找模式] [文件名1,文件名2,……] [功能说明] 以指定模式搜索文件,并通知用户在什么文件中搜索到与指定的模式匹配的字符串,并打印出所有包含该字符串的文本行,在该文本行的最前面是该行所在的文件名. [参数] 选项: - E 每个模式作为一个扩展的正则表达式对待. - F 每个模式作为一组固定字符串对待(以新行分隔),而不作为正则表达式. - b在输出的每一行前显示包含匹配字符串的行在文件中的字节偏移量. - c 只显示

linux下的软硬链接

软链接与硬链接解决了linux下文件的共享使用,还可以增加权限安全以及节省存储空间. inode: 文件在linux上被分为用户数据(用户数据块:记录文件真实内容)与元数据(文件的其他附属性:文件大小.创建时间等),其中inode(文件索引号)是元数据的一部分但不包含文件名,它是文件的唯一标识.系统或程序通过inode号寻找匹配的文件数据块. 软链接(符号链接): 如果文件用户数据块中存放的内容是另一文件的路径名指向,则该文件为软链接. 软链接的创建与使用: 1.软链接有自己的inode和数据块