Linux操作系统的文件链接
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
标题:Linux操作系统的文件链接
内容:文件链接
时间:2019年4月15日
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1. 文件系统文件存储方式
例如:/dir1000/file100.txt
--------------------------------------------------------------------------
inode | block
--------------------------------------------------------------------------
100(dir1000) | file100.txt-->200以及访问权限等等信息
--------------------------------------------------------------------------
200(file001.txt) | file100.txt文件中的真正的内容
--------------------------------------------------------------------------
访问过程:
访问文件所在的目录,找到文件对应的inode节点号
再通过inode节点号,到文件系统中查看真正的文件内容
2. 符号链接(软链接)与硬链接
2.1 符号链接与软链接举例
[root@test ~]# mkdir /dir1000
[root@test ~]# mkdir /dir2000
[root@test ~]# mkdir /dir3000
[root@test ~]# touch /dir1000/file001
[root@test ~]# ln /dir1000/file001 /dir2000/file002
[root@test ~]# ln -s /dir1000/file001 /dir3000/file003 //符号链接
[root@test ~]# ll /dir1000/file001 /dir2000/file002 /dir3000/file003
-rw-r--r-- 2 root root 0 Apr 15 00:16 /dir1000/file001
-rw-r--r-- 2 root root 0 Apr 15 00:16 /dir2000/file002
lrwxrwxrwx 1 root root 16 Apr 15 00:17 /dir3000/file003 -> /dir1000/file001
2.2 符号链接与硬链接存储方式
符号链接:
--------------------------------------------------------------------------
inode | block
--------------------------------------------------------------------------
100(dir1000) | file001->200以及访问权限等等信息
--------------------------------------------------------------------------
200(file001) | file001文件中的真正的内容
--------------------------------------------------------------------------
300(dir3000) | file003->400
--------------------------------------------------------------------------
400(file003) | file003文件内容(/dir1000/file001)
--------------------------------------------------------------------------
符号链接访问过程:
访问软链接文件的所在的目录并获取软链接文件的inode
访问软链接文件并获取原文件所在的位置
访问软链接文件所指向原文件的父级目录,判断 是否具备访问权限,获取原文件的inode
访问软链接指向的原文件内容
硬链接:
--------------------------------------------------------------------------
inode | block
--------------------------------------------------------------------------
100(dir1000) | file001->200以及访问权限等等信息
--------------------------------------------------------------------------
200 | 文件中的真正的内容
--------------------------------------------------------------------------
300(dir3000) | file003->200
--------------------------------------------------------------------------
硬链接访问过程:
访问硬链接文件所在目录并获取文件的inode节点号,判断是否具备访问权限
根据获取的inode节点号读取文件的真正的内容
2.3 符号链接与硬链接的特性
符号链接:
符号链接的功能等价于Windows操作系统中的快捷方式。
符号链接可以支持文件和目录进行链接。
符号链接可以跨文件系统进行链接。
硬链接:
硬链接与原文件指向同一inode节点,不存在等级之分。
硬链接的功能等价复制但有区别与复制。
文件路径过长时便于文件等访问。
防止重要的文件误删除。
硬链接不能夸文件系统创建。
目录不能创建硬链接。
2.4 符号链接注意事项
文件或目录做符号链接时一定要注意使用绝对路径,否则可能导致找不到或找错文件。
[root@test ~]# mkdir /dir4000
[root@test ~]# mkdir /dir5000
[root@test ~]# mkdir /dir6000
[root@test ~]# touch /dir4000/file004
[root@test ~]# echo 'file004' >/dir4000/file004
[root@test ~]# touch /dir5000/file004
[root@test ~]# echo '/dir5000/file004' >/dir5000/file004
[root@test ~]# cd /dir4000/
[root@test dir4000]# ln -s file004 /dir5000/file004_link
[root@test dir4000]# ln -s file004 /dir6000/file004_link
[root@test dir4000]# cd
[root@test ~]# cat /dir4000/file004
file004
[root@test ~]# cat /dir5000/file004_link
/dir5000/file004
[root@test ~]# cat /dir6000/file004_link
cat: /dir6000/file004_link: No such file or directory
目录做符号链接时删除时不要加最后的斜杠,否则删除的将时目录下的内容。
[root@test ~]# mkdir /dir100
[root@test ~]# mkdir /dir200
[root@test ~]# touch /dir100/file100
[root@test ~]# touch /dir200/file200
[root@test ~]# ln -s /dir100/ /dir300
[root@test ~]# ln -s /dir200/ /dir400
[root@test ~]# rm -rf /dir300/ //删除的是目录下的内容
[root@test ~]# ll /dir100/
total 0
[root@test ~]# ll -d /dir300
lrwxrwxrwx 2 root root 4096 Apr 15 00:53 /dir100/ -> /dir300/
[root@test ~]# rm -rf /dir400 //删除的链接文件
[root@test ~]# ll /dir200/
-rw-r--r-- 1 root root 0 Apr 15 00:53 file200
[root@test ~]# ll /dir400
ls: cannot access /dir400: No such file or directory
Linux操作系统的文件链接的更多相关文章
- Linux操作系统的文件查找工具locate和find命令常用参数介绍
Linux操作系统的文件查找工具locate和find命令常用参数介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.非实时查找(数据库查找)locate工具 locate命 ...
- Linux文件链接hard link与symbolic link
Linux中文件链接有两种方式,一种是hard link,又称为硬链接:另一种是symbolic link,又称为符号链接.要区分两者的不同要回顾Linux常用的ext2文件系统.这种文件系统使用in ...
- Linux链接库四(多个库文件链接顺序问题)
最近在Linux下编程发现一个诡异的现象,就是在链接一个静态库的时候总是报错,类似下面这样的错误: (.text+0x13): undefined reference to `func' 关于unde ...
- 转: linux文件链接(软链接和硬链接)
链接:一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法. Linux中包括两种链接:硬链接(Hard Link)和软链接(Soft Link),软链接又称为符号链接(Symbolic l ...
- Linux下的链接文件
整理自<鸟哥的Linux私房菜>,整理者:华科小涛http://www.cnblogs.com/hust-ghtao/ Linux中的链接文件分为两种:硬链接和软链接.软链接(symbol ...
- linux文件链接
我的github,欢迎关注,分享知识与技术 链接:一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法. Linux中包括两种链接:硬链接(HardLink)和软链接(Soft Link), ...
- NO21 Llinux的文件种类与扩展名--文件权限--软硬链接--Linux删除文件原理
Linux的文件种类与扩展名 一.文件种类:1.普通文件(regular file)第一个字符为[ - ]包括:①纯文本档(ASCII):这是Linux系统中最多的一种文件类型,称为纯文本档.是因为内 ...
- linux文件管理之链接文件
文件链接 ====================================================================================软链接 或 符号链接硬 ...
- (转载)使用 udev 高效、动态地管理 Linux 设备文件
概述: Linux 用户常常会很难鉴别同一类型的设备名,比如 eth0, eth1, sda, sdb 等等.通过观察这些设备的内核设备名称,用户通常能知道这些是什么类型的设备,但是不知道哪一个设备是 ...
随机推荐
- 用ASP.NET Core 2.1 建立规范的 REST API -- HATEOAS
本文所需的一些预备知识可以看这里: http://www.cnblogs.com/cgzl/p/9010978.html 和 http://www.cnblogs.com/cgzl/p/9019314 ...
- mybatis框架(7)---mybatis逆向工程
mybatis逆向工程 逆向工程的目的就是缩减了我们的开发时间.所谓mybatis逆向工程,就是mybatis会根据我们设计好的数据表,自动生成pojo.mapper以及mapper.xml. 接 ...
- 解读经典《C#高级编程》继承 页107-113.章4
前言 本章节开始讲接口. 接口 接口的声明很像抽象类,有方法的声明但无方法体.但它比抽象类限制更多.和类比起来,接口的定义有众多限制. 接口只能包含声明,而无方法体 接口只能包含方法.属性.索引器.事 ...
- Unity MMORPG游戏开发教程(一)——初识Unity
五邑隐侠,本名关健昌,10年游戏生涯,现隐居五邑.本系列文章以C#为介绍语言,基于Unity2017.4.x. 一.环境搭建 我使用的是Unity+VSCode,用的是mac系统,windows的自己 ...
- C#工具:分词辅助类
using System; using System.Collections; using System.IO; using System.Text.RegularExpressions; names ...
- C#保留2位小数几种场景总结
场景1: C#保留2位小数,.ToString("f2")确实可以,但是如果这个数字本来就小数点后面三位比如1.253,那么转化之后就会变成1.25.可不可以刚好保留到最后一位不是 ...
- MySQL 笔记整理(13) --为什么数据表删掉一半,表文件大小不变?
笔记记录自林晓斌(丁奇)老师的<MySQL实战45讲> (本篇内图片均来自丁奇老师的讲解,如有侵权,请联系我删除) 13) --为什么数据表删掉一半,表文件大小不变? 我们还是以MySQL ...
- 10分钟 在linux里创建.net core helloworld控制台程序
官方教程 安装linux https://www.cnblogs.com/LittleFeiHu/p/9749455.html 第一步 :选择和你本机适用的Linux版本,我这里用的是18.04. 第 ...
- 多线程之Thread
Thread类可以创建和控制线程,Thread类的构造函数重载为接受ThreadStart和ParameterizedThreadStart类型的委托参数. Thread类默认创建的是前台线程,所以我 ...
- Uncaught ReferenceError: jQuery is not defined
页面调试时,明明引入了JQ文件,却一直提示Uncaught ReferenceError: jQuery is not defined错误. 转自:http://blog.csdn.net/baicp ...