Linux系统编程 48 目录项和inode

学习笔记

inode
在硬链接的时候,涉及到inode
使用stat filename

如果给一个文件创建硬链接的时候,
那个和源文件有相同的inode

在了Linux下创建硬链接和软链接(也就是符号链接)都是用ln命令,
当使用ln命令时加上-s选项就表示创建的连接文件是一个软链接,
如果使用ln命令时不带-s选项就表示创建的是一个硬链接。
命令的格式则是:ln 原文件 链接文件

$cp -r 46lseek/ 47inode
$cd 47inode/
$ls
dict.cp       f.c      lseek_test    lseek.txt  trunc
dict.txt.txt  lseek.c  lseek_test.c  makefile   trunc.c
$stat f.c
  File: f.c
  Size: 500           Blocks: 8          IO Block: 4096   regular file
Device: 805h/2053d    Inode: 669607      Links: 1
Access: (0744/-rwxr--r--)  Uid: ( 1000/  ubuntu)   Gid: ( 1000/  ubuntu)
Access: 2021-12-23 22:46:19.623477118 +0800
Modify: 2021-12-23 22:46:19.639477118 +0800
Change: 2021-12-23 22:46:19.639477118 +0800
 Birth: -

inode是一个整数。

inode的本质和文件描述符很类似。其本质是一个结构体,存储着文件的属性:
文件权限,文件类型,大小,访问修改时间,用户,所属组,盘块位置
就是ls -l 查看出来的东西。
大多数inode放在磁盘上,少量常用和近期使用的的inode会被缓存到内存里。

通过ls -li 来查看各个文件的文件inode数

$ls -li
total 5540
669609 -rw-rw-r-- 1 ubuntu ubuntu     250 12月 23 22:46 dict.cp
669604 -rwxr--r-- 1 ubuntu ubuntu 5600268 12月 23 22:46 dict.txt.txt
669607 -rwxr--r-- 1 ubuntu ubuntu     500 12月 23 22:46 f.c
669603 -rw-rw-r-- 1 ubuntu ubuntu     496 12月 23 22:46 lseek.c
663261 -rwxrwxr-x 1 ubuntu ubuntu   19904 12月 23 22:46 lseek_test
669605 -rw-rw-r-- 1 ubuntu ubuntu     369 12月 23 22:46 lseek_test.c
669602 -rw-rw-r-- 1 ubuntu ubuntu      22 12月 23 22:46 lseek.txt
669595 -rwxr--r-- 1 ubuntu ubuntu     178 12月 23 22:46 makefile
669608 -rwxrwxr-x 1 ubuntu ubuntu   19616 12月 23 22:46 trunc
669606 -rw-rw-r-- 1 ubuntu ubuntu     284 12月 23 22:46 trunc.c
$ln f.c f_hard.c
$ls -li
total 5544
669609 -rw-rw-r-- 1 ubuntu ubuntu     250 12月 23 22:46 dict.cp
669604 -rwxr--r-- 1 ubuntu ubuntu 5600268 12月 23 22:46 dict.txt.txt
669607 -rwxr--r-- 2 ubuntu ubuntu     500 12月 23 22:46 f.c
669607 -rwxr--r-- 2 ubuntu ubuntu     500 12月 23 22:46 f_hard.c
669603 -rw-rw-r-- 1 ubuntu ubuntu     496 12月 23 22:46 lseek.c
663261 -rwxrwxr-x 1 ubuntu ubuntu   19904 12月 23 22:46 lseek_test
669605 -rw-rw-r-- 1 ubuntu ubuntu     369 12月 23 22:46 lseek_test.c
669602 -rw-rw-r-- 1 ubuntu ubuntu      22 12月 23 22:46 lseek.txt
669595 -rwxr--r-- 1 ubuntu ubuntu     178 12月 23 22:46 makefile
669608 -rwxrwxr-x 1 ubuntu ubuntu   19616 12月 23 22:46 trunc
669606 -rw-rw-r-- 1 ubuntu ubuntu     284 12月 23 22:46 trunc.c

这里面的 1 2 就是inode数


文件由两部分组成:
1.dentry
2.inode

多提一嘴,当给一个文件创建硬链接的时候,这些硬链接有相同的inode
,但是有不同的目录项。


dentry (目录项:包含文件名,inode的编号)->inode存储文件的属性 -> 文件内容


删除一个硬链接,是把硬链接数字 - 1,实际上就是去掉一个目录项
当硬链接树为0,说明这个inode没有被引用。但是注意即使是硬链接数为0,
磁盘的内容也没有被擦除。磁盘空间只能覆盖。
所以安全起见,要注意格式化。但是格式化还是可以恢复数据。只要重新建立inode->磁盘空间(数据恢复)
所以要用数据覆盖安全些

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值