浅析Linux文件(一)inode与block、硬链接与软链接、恢复误删文
一、inode与block
1.inode和block概述文件数据包括元信息与实际数据,一个文件必须占用一个inode,但至少占用一个block。
2.inode的理解(1)inode包含文件元信息:
当我们想查看某个文件的inode信息时,使用的是“stat”命令,后面直接接文件的路径和名称即可。 [[email?protected] opt]# stat test/ 文件:"test/" 大小:24 块:0 IO 块:4096 目录 设备:802h/2050d Inode:33574981 硬链接:2 权限:(0755/drwxr-xr-x) Uid:( 0/ root) Gid:( 0/ root) 环境:unconfined_u:object_r:usr_t:s0 最近访问:2019-08-28 11:39:33.953003238 +0800 最近更改:2019-08-28 11:39:20.023004045 +0800 最近改动:2019-08-28 11:39:20.023004045 +0800 创建时间:- [[email?protected] opt]# (2)文件的三个主要时间属性:
3.inode号码每一inode都有一个号码,操作系统是通过inode号码来识别不同文件的。Linux系统内部是不使用文件名来识别文件的,对系统而言inode号码才是文件的名字。而文件名只是便于用户去记忆的名字,相当于inode号码的别称。其实这就相当于咱们的手机通讯录,咱们平时只要记住联系人的名字就可以拨通他的手机,但真正用来连接通话的是你保存在通讯录中的手机号码。移动或重命名文件时,只会改变文件名,inode号码是不变的。 (1)用户通过文件名打开文件时,系统内部过程如下:
(2)查看inode号码的方法:
[[email?protected] opt]# ls -i test/ 34964204 test01.txt [[email?protected] opt]#
[[email?protected] opt]# stat test/test01.txt 文件:"test/test01.txt" 大小:13 块:8 IO 块:4096 普通文件 设备:802h/2050d Inode:34964204 硬链接:1 权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root) 环境:unconfined_u:object_r:usr_t:s0 最近访问:2019-08-28 11:39:34.875003185 +0800 最近更改:2019-08-28 11:39:20.023004045 +0800 最近改动:2019-08-28 11:39:20.023004045 +0800 创建时间:- [[email?protected] opt]# 4.inode的大小inode也会消耗硬盘空间,每个inode的大小一般是128字节或256字节,在格式化文件系统时会确定inode的总数。
[[email?protected] opt]# df -i 文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点 /dev/sda2 10485760 121223 10364537 2% / devtmpfs 229705 368 229337 1% /dev tmpfs 233378 1 233377 1% /dev/shm tmpfs 233378 599 232779 1% /run tmpfs 233378 16 233362 1% /sys/fs/cgroup /dev/sda5 5241856 144 5241712 1% /home /dev/sda1 3145728 328 3145400 1% /boot tmpfs 233378 6 233372 1% /run/user/42 tmpfs 233378 20 233358 1% /run/user/0 [[email?protected] opt]# 5.inode的特殊作用当我们删除文件的文件名中包含有无法用键盘敲出的特殊字符,就导致我们无法删除文件。此时我们可以直接通过inode来删除文件。 二、硬链接与软链接在linux系统中有种文件是链接文件,可以为解决文件的共享使用。链接的方式可以分为两种,一种是硬链接(Hard Link),另一种是软链接或者也称为符号链接(Symbolic Link)。 在Linux系统中,多个文件名指向同一个inode,一般这种链接就称为硬链接。硬链接的作用之一是允许一个文件拥有多个有效路径名,这样用户就可以建立硬链接到重要的文件,以防止误删重要文件,不过硬链接只能在同一文件系统中的文件之间进行链接,而且不能对目录进行创建。文件名其实就相当于硬链接,当我们给文件建立了硬链接后,再去删除它的源文件,就相当于删除了其中一个硬链接。但它的元信息和数据任然在inode与block中存储着。当最后一个硬链接被删除后,它的元信息和数据任然在,但是系统会将它的inode号码释放到号码池,当有一个新文件获取了这个inode号码后,它的元信息和数据才会被覆盖。 软链接,其实与windows系统中的快捷方式很相似,与硬链接不同,软链接就是一个普通文件,只是数据块内容有点特殊,文件用户数据块中存放的内容是另一文件的路径名的指向,通过这个方式可以快速定位到软连接所指向的源文件实体。软链接可对文件或目录创建,当源文件被删除后,软链接也就失效了。
[[email?protected] test]# ls test01.txt [[email?protected] test]# ls -l 总用量 4 -rw-r--r--. 1 root root 13 8月 28 11:39 test01.txt [[email?protected] test]# ln test01.txt t01.txt [[email?protected] test]# ls -i 34964204 t01.txt 34964204 test01.txt [[email?protected] test]# ls -l 总用量 8 -rw-r--r--. 2 root root 13 8月 28 11:39 t01.txt -rw-r--r--. 2 root root 13 8月 28 11:39 test01.txt [[email?protected] test]# 我们可以看到,文件和它的硬链接的inode号码是相同的,所以无论我们用哪个打开它的内容都是相同的。
[[email?protected] test]# ls test01.txt [[email?protected] test]# ln -s test01.txt t01.txt [[email?protected] test]# ls t01.txt test01.txt [[email?protected] test]#
[[email?protected] test]# file test01.txt test01.txt: ASCII text [[email?protected] test]# cd ../ [[email?protected] opt]# file test/ test/: directory [[email?protected] opt]# 三、恢复误删文件1.恢复Linux6版本的EXT4类型的文件
输入:cd /mnt/Packages/ 输入:rpm -ivh e2fsprogs-libs-1.41.12-18.el6.x86_64.rpm 输入:rpm -ivh e2fsprogs-devel-1.41.12-18.el6.x86_64.rpm 输入:rpm -ivh libcom_err-devel-1.41.12-18.el6.x86_64.rpm 输入:rpm -ivh e2fsprogs-devel-1.41.12-18.el6.x86_64.rpm
输入:mkdir /extundel 输入:mount.cifs //192.168.100.50/share/ /extundel/ 输入:df -h
输入:cd /extundel/ 输入:tar jxvf extundelete-0.2.4.tar.bz2 -C /opt/
输入:cd /opt/extundelete-0.2.4/ 输入:yum install gcc gcc-c++ -y
输入:./configure 输入:make 输入:make install
2.恢复Linux7版本中的XFS类型文件。
格式:xfsdump -f 备份存放位置 要备份的路径或设备文件 -f:-------------------指定备份文件位置 -L:------------------指定备份会话标签(免交互) -M:-----------------指定设备标签(免交互) -s:------------------备份指定的文件,使用相对路径,相对于备份的文件系统路径
格式:xfsrestore -f 恢复文件的位置 存放恢复后文件的位置 常用选项: -f:-----------------------指定备份文件位置 -s:----------------------恢复指定文件恢复 -t:-----------------------查看文件的内容及详细信息
[[email?protected] ~]# xfsdump -f /opt/xfs_dump /dev/sdb1 //备份命令 .................................. //省略部分 please enter label for this dump session (timeout in 300 sec) -> xfs_dump //输入备份后文件名 session label entered: "xfs_dump" ..................................... //省略部分 please enter label for media in drive 0 (timeout in 300 sec) -> sdb1 //输入备份分区 media label entered: "sdb1" ......................................... //省略部分 xfsdump: Dump Status: SUCCESS
xfsdump使用限制:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |