文件链接
链接文件类型 [l]
ll stat 查看文件类型
链接方式分为硬链接和软连接
1、硬链接:为inode分配多个文件名,通过文件名找到inode,从而读取文件信息
2、软链接:类似Windows上的快捷方式
文件 = metadata + data
inode: 一个指向数据存储位置的指针
metdata: inode 文件名 等信息
元数据信息
[root@test ~]# stat hello
File: ‘hello’
Size: 1 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 33575029 Links: 1
权限 用户ID 组ID
Access: (0644/-rw-r—r—) userid Uid: ( 0/ root) groupid Gid: ( 0/ root)
selinux权限
Context: unconfined_u:object_r:admin_home_t:s0
时间戳
Access: 2020-02-06 02:51:04.011007753 -0500
Modify: 2020-02-06 02:50:51.949787952 -0500
Change: 2020-02-06 02:50:51.950787970 -0500
Birth: -
ln命令:创建链接文件
Usage: ln [OPTION]… [-T] TARGET LINK_NAME (1st form)
常见选项:
-s: 建立软链接文件,默认情况下是硬链接文件
-f: 强制创建
[root@test tmp]# ll -i 1.txt #ll列出性详细信息
16777289 -rw-r—r—. 1 root root 0 Feb 6 06:53 1.txt
[root@test tmp]# echo “hello” > 1.txt
输入hello到1.txt文本文件
[root@test tmp]# ln 1.txt 1_hard.txt #ln创建链接文件
[root@test tmp]# ln -s 1.txt 1_soft.txt #创建软链接文件
[root@test tmp]# ll -i #查看incode值
total 8
16777289 -rw-r—r—. 2 root root 6 Feb 6 06:53 1_hard.txt
17256888 lrwxrwxrwx. 1 root root 5 Feb 6 06:55 1_soft.txt -> 1.txt
16777289 -rw-r—r—. 2 root root 6 Feb 6 06:53 1.txt
注意:
1.当我们创建硬链接文件的时候,inode不会发生改变,链接数会加1,同时文件内容相同
2.当我们创建软链接文件的时候,inode会重新分配,链接数保持为1,同时文件内容相同
3.链接目的:在节省存储空间的情况下,共享文件
**
- 当源文件内容改变时,软硬链接文件内容都会改变**
[root@test tmp]# echo “eagles” >> 1.txt
[root@test tmp]# cat 1_soft.txt && cat 1_hard.txt
hello
eagles
hello
eagles
5、当删除源文件时,软链接失效,硬链接正常;硬链接其实和源文件可以说表现上是独立的
[root@test tmp]# rm 1.txt
[root@test tmp]# cat 1_soft.txt #软链接失效
cat: 1_soft.txt: No such file or directory
[root@test tmp]# cat 1_hard.txt
hello
eagles
硬链接特点:
- 无论修改源文件还是硬链接文件,另一个文件都会改变
- 无论删除源文件还是硬链接文件,只要存在一个文件(link),这个文件依然可用
- 硬链接不会新建inode,也不会更改inode的总数
- 硬链接不能跨文件系统,因为在不同的文件系统中inode号是可以重新进行分配的
- 硬链接不能够链接目录
软链接特点:
- 无论修改源文件还是软链接文件,另一个文件都会改变
- 删除软链接文件,源文件不受影响;反之,软链接文件不正常
- 软链接会新建inode号和block,block中不存储实际文件数据,只存源文件的inode和绝对路径
- 软链接是可以链接目录的
- 软连接是可以跨分区的
那只删除文件名的话,文件占用的空间会释放吗?
会将link数减1; 当link为0时,文件占用的空间将释放掉,关键看的是link数的大小
文件系统