娃哈哈网站建设策划书,海南旅游网页设计,百度推广优化,电子商务公司属于什么行业类别ℹ️大家好#xff0c;我是练小杰#xff0c;周五又到了#xff0c;明天应该就是牛马的休息日了吧#xff01;#xff01;#x1f606; 前天我们详细介绍了 硬链接的特点#xff0c;现在继续探讨 软链接的特点#xff0c;并且后续将添加更多相关知识噢#xff0c;谢谢… ℹ️大家好我是练小杰周五又到了明天应该就是牛马的休息日了吧 前天我们详细介绍了 硬链接的特点现在继续探讨 软链接的特点并且后续将添加更多相关知识噢谢谢各位的支持 前情回顾: 【看懂Linux文件的硬链接】 Linux专栏 【Linux零基础开始】【Shell 脚本编程】 【Linux文件系统 】 主页【练小杰的CSDN】 Linux文件的软链接 主页【[练小杰的CSDN](https://blog.csdn.net/weixin_55767624?spm1011.2415.3001.5343)】 什么是软链接特点缺点实际应用场景 软链接的创建、查看和删除创建软链接查看软链接删除软链接 理解软链接创建软链接并查看权限查看两个文件的inode查看两个文件的详细信息查看并执行软链接 软链接与硬链接的区别mv命令移开文件并查看查看并执行硬链接 testln.sh区别总结 实操练习创建硬链接创建软链接⚠️注意 什么是软链接 软链接又叫符号链接是系统新建一个链接文件它实际上是一个特殊的文件。在符号链接中链接文件实际上是一个文本文件其中包含所链接的那个文件的位置信息软链接可以跨系统。软链接文件类似于Windows的快捷方式快捷方式删了就删了原来文件还是存在的。 特点 类似Windows快捷方式 软链接拥有自己的索引节点和Block块但是数据块中只保存原有文件的文件名和索引节点号并没有实际的文件数据 lrwxrwxrwx 软链接 软链接文件权限都为 rwxrwxrwx 修改任意文件另一个都改变 删除原文件软链接不能使用。 软链接本身只占用很少的磁盘空间因为它只是一个指向目标文件或目录的指针。
缺点 依赖性 软链接依赖于目标文件或目录的存在。如果目标被删除或移动软链接将成为悬挂链接导致访问失败。 性能开销 访问软链接时需要进行额外的解析步骤可能会带来轻微的性能开销尤其是在深层嵌套的目录结构中。 安全性风险软链接可能被用于恶意目的例如创建循环链接或指向敏感文件从而引发安全问题。 权限问题 软链接的权限设置不当可能会导致未经授权的访问。比如一个软链接可能指向一个受保护的文件如果软链接的权限设置不正确可能会被非授权用户访问。 可读性 在文件系统中软链接可能会增加复杂性使得文件结构不易理解尤其是当有多个软链接指向同一个目标时。 实际应用场景
版本管理 在软件开发中可以使用软链接来指向不同版本的库或可执行文件方便版本切换和管理。 快捷访问 创建软链接作为快捷方式方便快速访问常用文件或目录。例如可以在用户主目录下创建一个软链接指向一个常用的配置文件。 共享数据 在多用户环境中可以使用软链接来共享数据文件或目录而不需要复制数据节省磁盘空间。 系统配置 在系统配置中可以使用软链接来指向不同的配置文件或脚本方便系统管理和维护。 备份和恢复 在备份和恢复过程中可以使用软链接来指向备份目录或文件方便数据恢复和管理。 模块化设计 在模块化设计中可以使用软链接来动态加载或卸载模块例如在Linux内核模块管理中软链接被广泛使用。 软链接的创建、查看和删除
创建软链接
使用命令 ln -s 可以创建软链接文件
ln [选项] [源文件] [目标文件]
#选项 -s 用于创建软链接例如创建指向 /path/to/target 的软链接 /path/to/link
ln -s /path/to/target /path/to/link查看软链接
输出结果中会显示软链接的类型和指向的目标
ls -l /path/to/link删除软链接
执行命令后只会删除软链接本身而不会影响目标文件或目录
rm /path/to/link理解软链接 为了更好的理解软链接的概念我们进行以下实验操作 博客【看懂Linux文件的硬链接】中我们已经创建了文件/inodetest/test.sh和子目录/inodetest/inodedir接下来我们在这个子目录下创建文件test.sh的软链接testsln然后分别查看两个文件的inode
创建软链接并查看权限
[rootlocalhost inodedir]# ln -s ../teat.sh testsln
[rootlocalhost inodedir]# ls -l
lrwxrwxrwx. 1 root root 10 Jul 11 03:16 testsln - ../test.sh 可以发现权限部分以”l”开 头链接数为1。 查看两个文件的inode
[rootlocalhost inodedir]# ls -i ../test.sh
52621635 ../test.sh
[rootlocalhost inodedir]# ls -i testsln
16791568 testsln⚠️这时我们可以看到两者的inode号是不同的 查看两个文件的详细信息
源文件 test.sh
[rootlocalhost inodedir]# stat ../test.shFile: ../test.sSize: 38 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 52621635 Links: 2
Access: (0744/-rwxr--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:default_t:s0
Access: 2020-07-11 00:28:44.386701866 -0700
Modify: 2020-07-11 00:26:37.532584298 -0700
Change: 2020-07-11 00:28:24.648216773 -0700Birth: - 这里的 Links还是2尽管创建了一个软链接但没有改变Links的值 软链接 testsln
[rootlocalhost inodedir]# stat testslnFile: testsln - ../test.shSize: 10 Blocks: 0 IO Block: 4096 symbolic link
Device: 803h/2051d Inode: 16791568 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:default_t:s0
Access: 2020-07-11 03:17:34.296526567 -0700
Modify: 2020-07-11 03:16:43.018567745 -0700
Change: 2020-07-11 03:16:43.018567745 -0700Birth: -查看并执行软链接
[rootlocalhost inodedir]# cat testsln
#!/bin/sh
echo This is a hard link!
[rootlocalhost inodedir]# ./testsln
This is a hard link!可知用cat命令打开软链接文件testsln的内容与test.sh的内容一样实际上读的是test.sh文件并且软链接testsln运行结果与test.sh一样 软链接与硬链接的区别 我们进行以下操作理解它们的区别首先将原始文件/inodetest/test.sh文件移开到 /inodetest/testbak.sh文件。然后比较硬链接文件/inodetest/subinodedir/testln.sh与软链接文件/inodetest/inodedir/testsln 的特点。 mv命令移开文件并查看
[rootlocalhost inodedir]# mv ../test.sh ../testbak.sh[rootlocalhost inodedir]# cat testln
cat: testln: No such file or directory
[rootlocalhost inodedir]# ./testln
-bash: ./testln: No such file or directory这时我们已经无法打开软链接文件testsln并且也无法运行软链接文件testsln。 查看并执行硬链接 testln.sh
[rootlocalhost inodedir]# cat ../subinodedir/testln.sh
#!/bin/sh
echo This is a hard link!
[rootlocalhost inodedir]# ../subinodedir/testln.sh
This is a hard link!可知删除test.sh不影响打开硬链接文件testln.sh而且也不影响运行硬链接文件testln.sh。 区别总结
从以上命令可以看出软链接文件testsln和文件test.sh的inode号虽然不一样但是文件testsln的内容其只是文件test.sh的路径。当读取文件testsln时系统会自动将访问者指向文件test.sh。因此无论打开哪一个文件最终读取的都是文件test.sh。软链接文件testsln必须依赖于文件test.sh而存在如果删除了源文件test.sh打开文件testsln就会报错“No such file or directory”。软链接与硬链接最大的不同文件testsln指向文件test.sh的文件名而不是文件test.sh的inode号码文件test.sh的inode链接数不会因此发生变化。 ⚠️注意 软链接和硬链接的重要区别是如果删除源文件那么软链接不可用但不影响硬链接的使用。 实操练习
创建硬链接
第一步首先在“/”目录下创建两个目录user1和user2然后在user1下创建一个文件test.txt
[rootlocalhost /]# mkdir user1
[rootlocalhost /]# mkdir user2
[rootlocalhost /]# cd user1
[rootlocalhost user1]# vim test.txt第二步在目录user2下创建文件test.txt的硬链接testln.txt 操作1创建链接文件 [rootlocalhost user1]# ln test.txt /user2/testln.txt操作2: 查看输出结果 [rootlocalhost user1]# ls -l /user2
-rw-r--r--. 2 root root 16 May 17 07:43 testln.txt第三步查看源文件和链接的关系
[rootlocalhost user1]# cat test.txt
This is a test!
[rootlocalhost user1]# cat /user2/testln.txt
This is a test!这里的 /user1/test.txt和/user2/testln.txt内容相同 [rootlocalhost user1]# vim test.txt
[rootlocalhost user1]# cat test.txt
This is a LXJ test!
[rootlocalhost user1]# cat /user2/testln.txt
This is a LXJ test!当 /user1/test.txt 改变内容/user2/testln.txt跟着改变 第四步查询两个文件的 inode是否一致
[rootlocalhost user1]# ls -i test.txt /user2/testln.txt
2652713 test.txt 2652713 /user2/testln.txt结果显示两个文件的 inode完全一致我们还可以再创建test.txt的多个硬链接文件用上面的方式查看是否都一样这里大佬们去尝试一下我不过多重复 第五步删除test.txt文件查看testln.txt
[rootlocalhost user1]# rm -rf test.txt
[rootlocalhost user1]# cat /user2/testln.txt
This is a LXJ test!易看到删除源文件 /user1/test.txt文件并不影响/user2/testln.txt文件的使用 创建软链接
第一步在/user1下创建文件test.txt文件
[rootlocalhost user1]# vim test.txt
[rootlocalhost user1]# cat test.txt
This is a symbolic link test!第二步在目录user2下创建文件test.txt的软链接test.sym
[rootlocalhost user2]# ln -s /user1/test.txt /user2/test.sym[rootlocalhost user2]# ls -l
lrwxrwxrwx. 1 root root 15 May 17 08:57 test.sym - /user1/test.txt
[rootlocalhost user2]# cat test.sym
This is a symbolic link test!显然/user1/test.txt和/user2/test.sym显示的内容相同。 ⚠️注意 在创建软链接时必须指明所链接的文件的完整路径否则无法实现软链接我们可以按下面操作进行测试。 第一步不指定完整路径
[rootlocalhost user1]# ln -s test.txt /user2/test.sy
[rootlocalhost user1]# ls -l /user2
lrwxrwxrwx. 1 root root 8 May 17 08:41 test.sy - test.txt
[rootlocalhost user1]# cat /user2/test.sy
cat: /user2/test.sy: No such file or directory以上操作中没有指明test.txt的完整路径导致无法链接 第二步查询/user1/test.txt和/user2/test.sym两个文件的 inode是否一致
[rootlocalhost user1]# ls -i test.txt /user2/test.sym
2655739 test.txt 17804334 /user2/test.sym/user1/test.txt和/user2/test.sym两个文件的 inode不一致 第三步修改一个测试另一个是否也发生变化。为了说明问题我们修改/user2/test.sym文件做为测试(也可以修改/user1/test.txt文件进行测试)
[rootlocalhost user1]# vim /user2/test.sym[rootlocalhost user1]# cat /user2/test.sym
This is a NEW symbolic link test!
[rootlocalhost user1]# cat test.txt
This is a NEW symbolic link test!两个文件被同时修改事实上在软链接中只保存所指向文件的名字而已当编辑软链接这个软链接文件时首先通过所指向的文件去找到指向的文件然后通过指向文件的inode来找到实体存放的inode所以编辑软链接文件实际上就是修改真实存放在block中的内容。 第四步测试删除原文件软连接是否有效。
[rootlocalhost user1]# rm -rf test.txt
[rootlocalhost user1]# cat /user2/test.sym
cat: /user2/test.sym: No such file or directory这里删除了源文件软连接无效 今天的Linux系统的文件软链接内容到这里就结束了感谢各位朋友的陪伴 ℹ️了解更多主页【练小杰的CSDN】 ⚠️若博客里的内容有问题欢迎指正我会及时修改 下周同一时间再见各位伙伴们~~