2021-02-07 分类: 网站建设
我们现代的操作系统需要防止程序崩溃导致信息丢失,需要将信息存储在文件之中。而且文件能够被多个进程同时读取。在Linux中所以的资源,外设都抽象成了文件,所以就有了Linux中“一切皆文件”的特性。当然有文件,肯定是不够的,总不能把所有的文件放在一起管理,实在是太乱,不易管理维护。Linux就引入了目录的概念,在Windows中可以称之为文件夹。目录的引入就会让Linux的根文件系统外观上变成了一个层次分明的目录树。如下图:
使用什么命令可以查看inode号?
可以使用stat和ls -i 命令查看,如下图所示:
什么是硬链接?
硬链接是指通过索引节点来进行连接。也就是存在多个文件名指向同一个inode。这样就可以将重要的文件建立硬链接,来防止“误删”的操作。
命令:
- link oldfile newfile
可以创建硬链接。硬链接的inode是相同的,但是文件名不同,所以它有一些特性:
例如:
- # ls -li
- total 0
- // 只能对已存在的文件创建硬连接
- # link test.file test_hard.link
- link: cannot create link `test_hard.link' to `test.file': No such file or directory
- # echo "This is an original file" > test.file
- # cat test.file
- This is an original file
- # stat test.file
- File: `test.file'
- Size: 25 Blocks: 8 IO Block: 4096 regular file
- Device: 807h/2055d Inode: 660650 Links: 2
- Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
- ...
- // 文件有相同的 inode 号以及 data block
- # link test.file test_hard.link | ls -li
- total 8
- 660650 -rw-r--r-- 2 root root 25 Sep 1 17:44 test_hard.link
- 660650 -rw-r--r-- 2 root root 25 Sep 1 17:44 test.file
- // 不能交叉文件系统
- # ln /dev/input/event5 /root/bfile.txt
- ln: failed to create test_hard link `/root/bfile.txt' => `/dev/input/event5':
- Invalid cross-device link
- // 不能对目录进行创建硬连接
- # mkdir -p test.dir/test
- # ln test.dir/ test_hardlink.dir
- ln: `test.dir/': test_hard link not allowed for directory
- # ls -iF
- 660650 test_hard.link 657948 test.dir/ 660650 test.file
具体的解释可以参考硬链接的5点特性。
什么是软链接?
软连接就和硬链接完全不同,软连接是用户数据(data blocks)中记录的是另一个文件的路径名的指向。可以理解为软连接其实就是一个普通的文件,只是他的内容非常的特殊。所以软连接有他自己的inode号以及data blocks。那我总结下软连接的特性:
下图展示下软链接的访问过程:
例如:
- # ls -li
- total 0
- // 可对不存在的文件创建软链接
- # ln -s test.file test_soft.link
- # ls -liF
- total 0
- 789467 lrwxrwxrwx 1 root root 8 Sep 1 18:00 test_soft.link -> test.file
- // 由于被指向的文件不存在,此时的软链接 test_soft.link 就是死链接
- # cat test_soft.link
- cat: test_soft.link: No such file or directory
- // 创建被指向的文件 test.file,test_soft.link 恢复成正常的软链接
- # echo "This is an original file_A" >> test.file
- # cat test_soft.link
- This is an original file_A
- // 对不存在的目录创建软链接
- # ln -s test.dir test_soft.link.dir
- # mkdir -p test.dir/test
- # tree . -F --inodes
- .
- ├── [ 789497] test.dir/
- │ └── [ 789498] test/
- ├── [ 789495] test.file
- ├── [ 789495] test_soft.link -> test.file
- └── [ 789497] test_soft.link.dir -> test.dir/
本文标题:怎样理解Linux的软连接和硬链接?
标题网址:/news/99623.html
成都网站建设公司_创新互联,为您提供标签优化、电子商务、App设计、网站设计、网站内链、外贸网站建设
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联
猜你还喜欢下面的内容