A、iノードおよびブロック
1.inodeとブロックの概要
ファイルデータがメタ情報と実際のデータが含まれ、ファイルは、1つのinodeを占めるが、少なくともブロックを取る必要があります。
セクタ:ファイルはハードディスクに格納され、ハードディスクの記憶セクタの最小単位であり、各セクタは、記憶空間の512バイトです。
ブロック(ブロック):ブロックの8つの連続セクタは、ファイルアクセスのブロックは、データファイルを格納するための最小単位です。
iノード(iノード):また、メタ情報ファイルを格納するためのiノードとして知られています。
2.inode理解
(1)iノードは、メタ情報ファイルが含まれています。
- ファイルのバイト数
- ファイルの所有者のユーザーID(UID)
- グループIDファイル(GID)
- ファイルを読み込んだ、書き込み、および実行権限を
- タイムスタンプファイル(atimeが、ctimeを、ファイルのmtime)
我々は、ファイルのiノード情報を表示したい場合は、直接パスとファイル名の後ろに接続されている「STAT」コマンドを使用します。
[root@localhost 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
创建时间:-
[root@localhost opt]#
三つの主要な時間特性(2)ファイル:
- 前回のファイルまたはディレクトリ:atimeの(アクセス時間)
- CTIME(時間を変更):最終変更時のファイルまたはディレクトリ(属性)
- ファイルのmtime(時間を変更):時間の最後に変更されたファイルまたはディレクトリ(コンテンツ)
3.inode番号
それぞれ、iノード番号を持って、オペレーティング・システム・ファイルは、異なるiノード番号によって識別されます。ファイルシステムのファイル名を識別するために、ファイル名を使用していない内部のLinuxシステムでは、inode番号です。ファイル名は、ニックネームのiノード番号と同等のものをユーザー名を覚えておくだけで簡単です。実際には、これは我々が彼の携帯電話をダイヤルする連絡先の名前を覚えることができるよう、通常限り、私たちの携帯電話の連絡先と同等ですが、本当にあなたの携帯電話番号のアドレス帳に保存されているコールを接続するために使用されます。ファイルを移動または名前変更、それが唯一のiノード番号は変更されません、ファイル名を変更します。
ユーザがファイルを開くと(1)、ファイル名内のシステムは、以下:
- システムは、最初のファイル名に対応するiノード番号を検索します
- (アクセスがあったかどうかを確認するためにメタ情報を参照してください)iノード番号inode情報を取得します
- データ・ブロック・ファイルを見つけるためのiノード情報を、よると、データを読み取ります
方法の(2)の表示inode番号:
LS -iコマンド:ファイル名に対応するビューのiノード番号
[root@localhost opt]# ls -i test/
34964204 test01.txt
[root@localhost opt]#
statコマンド:ビューファイルのiノード番号inode情報
[root@localhost 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
创建时间:-
[root@localhost opt]#
4.inodeサイズ
iノードは、ファイルシステムをフォーマットするiノードの総数を決定するときに、典型的には、各iノードのサイズは、128バイトまたは256バイトであり、ディスク・スペースを消費します。
DF -iコマンド:合計数とiノード番号は、各ハードディスクのパーティションのために使用されている参照
[root@localhost 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
[root@localhost opt]#
特別な役割を5.inode
私たちは、ファイル名をノックアウトするキーボードを使用することはできません特殊文字が含まれて削除すると、そのファイルを削除するために私たちを導くことはできません。この時点で、我々は直接iノードでファイルを削除することができます。
第二に、ハードリンクとソフトリンク
Linuxのファイルシステムで共有ファイルを解決するために使用することができ、リンクファイルの一種です。リンクは、一方が他方には、ソフトリンクまたはシンボリックリンク(シンボリックリンク)と呼ばれる、ハードリンク(ハードリンク)は、二つのタイプに分けることができます。
Linuxシステムでは、複数のファイル名は、一般的に、このリンク上のハードリンクと呼ばれ、同じiノードを指します。ハードリンクの役割の一つは、ユーザーが重要なファイルを誤って削除を防ぐために、重要なファイルへのハードリンクを作成できるように、ファイルは、複数の有効なパス名を持つことができますが、同じファイルシステム内のファイルのみの間でハードリンクリンク、およびディレクトリを作成することはできません。実際には、ファイル名は、我々は再びハードリンクを削除することと等価であるソースファイルを、それを削除し、ファイルへのハードリンクを確立する場合、ハードリンクと同等です。しかし、その後メタ情報とは、iノード内のすべてのブロックにデータを格納します。最後のハードリンクは、任意の過程で、そのメタ情報およびデータを削除したが、システムは、iノード番号の後に取得し、新しいファイルがあった場合、それはメタ情報およびデータだ、数プールにそのinode番号をリリースする予定する場合それはカバーされます。
软链接,其实与windows系统中的快捷方式很相似,与硬链接不同,软链接就是一个普通文件,只是数据块内容有点特殊,文件用户数据块中存放的内容是另一文件的路径名的指向,通过这个方式可以快速定位到软连接所指向的源文件实体。软链接可对文件或目录创建,当源文件被删除后,软链接也就失效了。
ln命令:创建硬链接。
[root@localhost test]# ls
test01.txt
[root@localhost test]# ls -l
总用量 4
-rw-r--r--. 1 root root 13 8月 28 11:39 test01.txt
[root@localhost test]# ln test01.txt t01.txt
[root@localhost test]# ls -i
34964204 t01.txt 34964204 test01.txt
[root@localhost 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
[root@localhost test]#
我们可以看到,文件和它的硬链接的inode号码是相同的,所以无论我们用哪个打开它的内容都是相同的。
ln -s命令:创建软链接
[root@localhost test]# ls
test01.txt
[root@localhost test]# ln -s test01.txt t01.txt
[root@localhost test]# ls
t01.txt test01.txt
[root@localhost test]#
file命令:查看文件类型
[root@localhost test]# file test01.txt
test01.txt: ASCII text
[root@localhost test]# cd ../
[root@localhost opt]# file test/
test/: directory
[root@localhost opt]#
三、恢复误删文件
1.恢复Linux6版本的EXT4类型的文件
安装extundelete软件包,先安装它的依赖包。
输入: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
将挂载过来的工具压缩包解压到“/opt/”目录中
输入:cd /extundel/
输入:tar jxvf extundelete-0.2.4.tar.bz2 -C /opt/
用“cd”命令进入“/opt/extundelete-0.2.4/”目录,安装编译器,因为现在的源码包是用C语言写的,不能直接用。
输入:cd /opt/extundelete-0.2.4/
输入:yum install gcc gcc-c++ -y
编译安装extundelete工具。
输入:./configure
输入:make
输入:make install
添加一块磁盘,对磁盘进行配置,配置完后,将磁盘分区格式化,文件格式为ext4,再创建一个目录“/data/”,并将磁盘分区挂载到目录下。
进入到“/data/”目录,创建三个文件a、b、c。然后再将三个文件删除,模拟文件误删。
我们先返回宿主目录,然后将sdb1解挂载。然后用“extundelete /dev/sdb1 --restore-all”来恢复删除的所有文件。注意:当你误删文件后,第一时间一定要将设备解挂载,因为如果有新的文件将删除的文件inode号给占用了就无法恢复了。(工作环境中一定要注意备份)
我们用“cd”命令进入到“RECOVERED_FILES/”目录中就能看到恢复的文件了。
2.恢复Linux7版本中的XFS类型文件。
xfsdump命令:备份系统文件
フォーマット:バックアップ対象のパスのxfsdump -fバックアップ保管場所やデバイスファイル
の一般的なオプション:
-f:-------------------指定备份文件位置
-L:------------------指定备份会话标签(免交互)
-M:-----------------指定设备标签(免交互)
-s:------------------备份指定的文件,使用相对路径,相对于备份的文件系统路径
xfsrestoreはコマンド:バックアップ・システムのファイルを復元
:書式の場所xfsrestoreは、回収ファイルの場所の後にファイルを復元-f
共通オプション:
-f:-----------------------指定备份文件位置
-s:----------------------恢复指定文件恢复
-t:-----------------------查看文件的内容及详细信息
まず、ハードディスクを追加し、パーティションを設定、フォーマットされたXFSファイルフォーマットタイプを再フォーマット、以下の「/ /データ」の新しいディレクトリにマウント。
「/データ/」ディレクトリにpasswdファイルをコピーし、「/データ/」ディレクトリにある「テスト」ディレクトリを作成し、ディレクトリに空のファイルを作成します。
終了「/データ/」ディレクトリには、その後、「xfs_dump」名前付き「の/ opt /」ディレクトリにSDB1パーティションのファイルをバックアップします
[root@localhost ~]# 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
「/データ/」ディレクトリ、アナログ誤って削除したファイル内のすべてのファイルを削除します。
削除は、我々はxfsrestoreは、コマンドファイルのディレクトリで「/データ/」に戻ります完了です。