• Linux 深入理解Linux文件系统与日志分析


    在Linux系统中,文件名和文件数据是分开存储的

    文件数据包含 元信息(即不包含文件名的文件属性)   和    实际数据

    文件元信息存储在 inode(索引节点)里,

    文件实际数据存储在 block(块)里;

    文件名存储在目录块里

    查看文件的元信息     

    stat  文件名

    1. [root@localhost ~]# stat anaconda-ks.cfg
    2. 文件:"anaconda-ks.cfg"
    3. 大小:2074 块:8 IO 块:4096 普通文件
    4. 设备:fd00h/64768d Inode:67144898 硬链接:1
    5. 权限:(0600/-rw-------) Uid:( 0/ root) Gid:( 0/ root)
    6. 环境:system_u:object_r:admin_home_t:s0
    7. 最近访问:2024-04-12 01:44:39.005730620 +0800
    8. 最近更改:2024-04-12 01:44:14.354964618 +0800
    9. 最近改动:2024-04-12 01:44:14.354964618 +0800
    10. 创建时间:-
    11. [root@localhost ~]#

    改变ctime (修改最近文件属性时间)

    1. [root@localhost ~]# echo 123456 >> anaconda-ks.cfg //输入123456 到anaconda-ks.cfg 末尾
    2. [root@localhost ~]# cat anaconda-ks.cfg
    3. [root@localhost ~]# cat anaconda-ks.cfg
    4. #version=DEVEL
    5. # System authorization information
    6. auth --enableshadow --passalgo=sha512
    7. # Use CDROM installation media
    8. cdrom
    9. # Use graphical install
    10. graphical
    11. # Run the Setup Agent on first boot
    12. firstboot --enable
    13. ignoredisk --only-use=sda
    14. # Keyboard layouts
    15. keyboard --vckeymap=cn --xlayouts='cn'
    16. # System language
    17. lang zh_CN.UTF-8
    18. # Network information
    19. network --bootproto=dhcp --device=ens33 --onboot=off --ipv6=auto --no-activate
    20. network --hostname=localhost.localdomain
    21. # Root password
    22. rootpw --iscrypted $6$lCNsNLYBoSLgy1xJ$fLC2eqvnd./OQYO3ueDaWdIXNaTHjWCWiVdbYXDKicx7X4O5uG3TCernPM4cmO4F2T6swRQiL.QHeb2ZjSSix0
    23. # System services
    24. services --enabled="chronyd"
    25. # System timezone
    26. timezone Asia/Shanghai --isUtc
    27. user --name=test --password=$6$pqpVPolNrgdFy0.l$eDkOH6pHUFPKo6nLELC7oqLKyMW6VzMY5gRgTK0C.vW6S9sBu5xCvS168FgT.THqeNBoTpZYbJDWJcn.AvBUY. --iscrypted --gecos="test"
    28. # X Window System configuration information
    29. xconfig --startxonboot
    30. # System bootloader configuration
    31. bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
    32. # Partition clearing information
    33. clearpart --none --initlabel
    34. # Disk partitioning information
    35. part pv.157 --fstype="lvmpv" --ondisk=sda --size=39935
    36. part /boot --fstype="xfs" --ondisk=sda --size=1024
    37. volgroup centos --pesize=4096 pv.157
    38. logvol / --fstype="xfs" --grow --maxsize=51200 --size=1024 --name=root --vgname=centos
    39. logvol swap --fstype="swap" --size=3968 --name=swap --vgname=centos
    40. %packages
    41. @^gnome-desktop-environment
    42. @base
    43. @core
    44. @desktop-debugging
    45. @development
    46. @dial-up
    47. @directory-client
    48. @fonts
    49. @gnome-desktop
    50. @guest-agents
    51. @guest-desktop-agents
    52. @input-methods
    53. @internet-browser
    54. @java-platform
    55. @multimedia
    56. @network-file-system-client
    57. @networkmanager-submodules
    58. @print-client
    59. @x11
    60. chrony
    61. kexec-tools
    62. %end
    63. %addon com_redhat_kdump --enable --reserve-mb='auto'
    64. %end
    65. %anaconda
    66. pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
    67. pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
    68. pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
    69. %end
    70. 123456
    71. [root@localhost ~]#

     

    查看文件的inode号    

    stat  文件名      ls -i 文件名

    1. [root@localhost ~]# ls -l //已长格式的形式查看文件
    2. 总用量 8
    3. -rw-------. 1 root root 2074 412 01:44 anaconda-ks.cfg
    4. -rw-r--r--. 1 root root 2122 412 01:45 initial-setup-ks.cfg
    5. drwxr-xr-x. 2 root root 6 412 01:45 公共
    6. drwxr-xr-x. 2 root root 6 412 01:45 模板
    7. drwxr-xr-x. 2 root root 6 412 01:45 视频
    8. drwxr-xr-x. 2 root root 6 412 01:45 图片
    9. drwxr-xr-x. 2 root root 6 412 01:45 文档
    10. drwxr-xr-x. 2 root root 6 412 01:45 下载
    11. drwxr-xr-x. 2 root root 6 412 01:45 音乐
    12. drwxr-xr-x. 2 root root 6 412 01:45 桌面
    13. [root@localhost ~]#
    14. [root@localhost ~]# ls -l -i //以长格式的形式查看文件和inode号
    15. 总用量 8
    16. 67144898 -rw-------. 1 root root 2074 412 01:44 anaconda-ks.cfg
    17. 67144914 -rw-r--r--. 1 root root 2122 412 01:45 initial-setup-ks.cfg
    18. 67163511 drwxr-xr-x. 2 root root 6 412 01:45 公共
    19. 34475388 drwxr-xr-x. 2 root root 6 412 01:45 模板
    20. 67163512 drwxr-xr-x. 2 root root 6 412 01:45 视频
    21. 34475389 drwxr-xr-x. 2 root root 6 412 01:45 图片
    22. 102606812 drwxr-xr-x. 2 root root 6 412 01:45 文档
    23. 86015 drwxr-xr-x. 2 root root 6 412 01:45 下载
    24. 86016 drwxr-xr-x. 2 root root 6 412 01:45 音乐
    25. 102606811 drwxr-xr-x. 2 root root 6 412 01:45 桌面

     

    1. [root@localhost ~]# stat anaconda-ks.cfg
    2. 文件:"anaconda-ks.cfg"
    3. 大小:2074 块:8 IO 块:4096 普通文件
    4. 设备:fd00h/64768d Inode:67144898 硬链接:1
    5. 权限:(0600/-rw-------) Uid:( 0/ root) Gid:( 0/ root)
    6. 环境:system_u:object_r:admin_home_t:s0
    7. 最近访问:2024-04-12 01:44:39.005730620 +0800
    8. 最近更改:2024-04-12 01:44:14.354964618 +0800
    9. 最近改动:2024-04-12 01:44:14.354964618 +0800
    10. 创建时间:-
    11. [root@localhost ~]#

    查看每个分区的inode数量

    df -i

    1. [root@localhost ~]# ls -i
    2. 85936 abc 67163512 视频
    3. 67163545 abc.txt 34475389 图片
    4. 67144898 anaconda-ks.cfg 102606812 文档
    5. 67144914 initial-setup-ks.cfg 86015 下载
    6. 67163511 公共 86016 音乐
    7. 34475388 模板 102606811 桌面
    8. [root@localhost ~]#

    Linux系统不使用 文件名 识别文件,而使用 inode号 来识别文件,文件名只是 inode号 便于识别的别称,文件名和inode号是一一对应的。

    用户通过文件名访问文件的过程:

    1. 先根据文件名找到对应的inode号;
    2. 再通过inode号获取inode信息;
    3. 再根据inode信息判断用户是否具有访问权限;
    4. 如果有则指向实际教据的块并读取数据,否则拒绝访问。

    直接查看和vim编辑器查看

    • 直接査看、修改文件内容或者改变文件名都不会影响 inode号,
    • 使用 vi 编辑器修改文件保存退出后会影响 inode号

    针对无法正常删除文件名含有特殊符号的文件时,可根据 inode号 来删除文件

    find  目录  -inum -delete

    实验 

     

    1. [root@localhost ~]# fdisk -l
    2. 磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区
    3. Units = 扇区 of 1 * 512 = 512 bytes
    4. 扇区大小(逻辑/物理):512 字节 / 512 字节
    5. I/O 大小(最小/最佳):512 字节 / 512 字节
    6. 磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
    7. Units = 扇区 of 1 * 512 = 512 bytes
    8. 扇区大小(逻辑/物理):512 字节 / 512 字节
    9. I/O 大小(最小/最佳):512 字节 / 512 字节
    10. 磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
    11. Units = 扇区 of 1 * 512 = 512 bytes
    12. 扇区大小(逻辑/物理):512 字节 / 512 字节
    13. I/O 大小(最小/最佳):512 字节 / 512 字节
    14. 磁盘标签类型:dos
    15. 磁盘标识符:0x0009ec77
    16. 设备 Boot Start End Blocks Id System
    17. /dev/sda1 * 2048 2099199 1048576 83 Linux
    18. /dev/sda2 2099200 83886079 40893440 8e Linux LVM
    19. 磁盘 /dev/mapper/centos-root:37.7 GB, 37706792960 字节,73646080 个扇区
    20. Units = 扇区 of 1 * 512 = 512 bytes
    21. 扇区大小(逻辑/物理):512 字节 / 512 字节
    22. I/O 大小(最小/最佳):512 字节 / 512 字节
    23. 磁盘 /dev/mapper/centos-swap:4160 MB, 4160749568 字节,8126464 个扇区
    24. Units = 扇区 of 1 * 512 = 512 bytes
    25. 扇区大小(逻辑/物理):512 字节 / 512 字节
    26. I/O 大小(最小/最佳):512 字节 / 512 字节
    27. [root@localhost ~]#

     

     

    1. [root@localhost ~]#
    2. [root@localhost ~]# fdisk -l
    3. 磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区
    4. Units = 扇区 of 1 * 512 = 512 bytes
    5. 扇区大小(逻辑/物理):512 字节 / 512 字节
    6. I/O 大小(最小/最佳):512 字节 / 512 字节
    7. 磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
    8. Units = 扇区 of 1 * 512 = 512 bytes
    9. 扇区大小(逻辑/物理):512 字节 / 512 字节
    10. I/O 大小(最小/最佳):512 字节 / 512 字节
    11. 磁盘标签类型:dos
    12. 磁盘标识符:0x635e871e
    13. 设备 Boot Start End Blocks Id System
    14. /dev/sdb1 2048 41943039 20970496 83 Linux
    15. 磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
    16. Units = 扇区 of 1 * 512 = 512 bytes
    17. 扇区大小(逻辑/物理):512 字节 / 512 字节
    18. I/O 大小(最小/最佳):512 字节 / 512 字节
    19. 磁盘标签类型:dos
    20. 磁盘标识符:0x0009ec77
    21. 设备 Boot Start End Blocks Id System
    22. /dev/sda1 * 2048 2099199 1048576 83 Linux
    23. /dev/sda2 2099200 83886079 40893440 8e Linux LVM
    24. 磁盘 /dev/mapper/centos-root:37.7 GB, 37706792960 字节,73646080 个扇区
    25. Units = 扇区 of 1 * 512 = 512 bytes
    26. 扇区大小(逻辑/物理):512 字节 / 512 字节
    27. I/O 大小(最小/最佳):512 字节 / 512 字节
    28. 磁盘 /dev/mapper/centos-swap:4160 MB, 4160749568 字节,8126464 个扇区
    29. Units = 扇区 of 1 * 512 = 512 bytes
    30. 扇区大小(逻辑/物理):512 字节 / 512 字节
    31. I/O 大小(最小/最佳):512 字节 / 512 字节
    32. [root@localhost ~]#
    1. [root@localhost ~]# mkfs -t ext3 /dev/sdb1 //格式化/dev/sdb1
    2. mke2fs 1.42.9 (28-Dec-2013)
    3. 文件系统标签=
    4. OS type: Linux
    5. 块大小=4096 (log=2)
    6. 分块大小=4096 (log=2)
    7. Stride=0 blocks, Stripe width=0 blocks
    8. 1310720 inodes, 5242624 blocks
    9. 262131 blocks (5.00%) reserved for the super user
    10. 第一个数据块=0
    11. Maximum filesystem blocks=4294967296
    12. 160 block groups
    13. 32768 blocks per group, 32768 fragments per group
    14. 8192 inodes per group
    15. Superblock backups stored on blocks:
    16. 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
    17. 4096000
    18. Allocating group tables: 完成
    19. 正在写入inode表: 完成
    20. Creating journal (32768 blocks): 完成
    21. Writing superblocks and filesystem accounting information: 完成
    22. [root@localhost ~]
    1. [root@localhost ~]#
    2. [root@localhost ~]#
    3. [root@localhost ~]# mkdir /xy101 //创建
    4. [root@localhost ~]# mount /dev/sdb1 /xy101/ //挂载
    5. [root@localhost ~]# df -hT //查看
    6. 文件系统 类型 容量 已用 可用 已用% 挂载点
    7. devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
    8. tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
    9. tmpfs tmpfs 1.9G 13M 1.9G 1% /run
    10. tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
    11. /dev/mapper/centos-root xfs 36G 4.4G 31G 13% /
    12. /dev/sda1 xfs 1014M 187M 828M 19% /boot
    13. tmpfs tmpfs 378M 12K 378M 1% /run/user/42
    14. tmpfs tmpfs 378M 0 378M 0% /run/user/0
    15. /dev/sdb1 ext3 20G 45M 19G 1% /xy101
    16. [root@localhost ~]#

    1. [root@localhost opt]# rz -E //传输文件

    1. [root@localhost opt]# ls
    2. CentOS_7_64_位【2】.xsh rh
    3. extundelete-0.2.4.tar.bz2
    4. [root@localhost opt]#
    5. [root@localhost opt]# mount /dev/sr0 /mnt //挂载到光盘
    6. mount: /dev/sr0 写保护,将以只读方式挂载
    7. [root@localhost opt]# cd /etc/yum.repos.d/
    8. [root@localhost yum.repos.d]# ls
    9. local.repo repo.bak
    10. [root@localhost yum.repos.d]
    11. [root@localhost yum.repos.d]# cat local.repo
    12. [local]
    13. name=local
    14. baseurl=ffile:///mnt
    15. enabled=1
    16. gpgcheck=0
    17. #gpgkey=file:///mnt/RPM-GPG-KEY-Centos-7
    18. [root@localhost yum.repos.d]#
    1. [root@localhost ~]# yum install -y e2fsprogs-libs e2fsprogs-devel //安装依赖包
    2. 已加载插件:fastestmirror, langpacks
    3. Loading mirror speeds from cached hostfile
    4. 软件包 e2fsprogs-libs-1.42.9-19.el7.x86_64 已安装并且是最新版本
    5. 正在解决依赖关系
    6. --> 正在检查事务
    7. ---> 软件包 e2fsprogs-devel.x86_64.0.1.42.9-19.el7 将被 安装
    8. --> 正在处理依赖关系 libcom_err-devel(x86-64) = 1.42.9-19.el7,它被软件包 e2fsprogs-devel-1.42.9-19.el7.x86_64 需要
    9. --> 正在处理依赖关系 pkgconfig(com_err),它被软件包 e2fsprogs-devel-1.42.9-19.el7.x86_64 需要
    10. --> 正在检查事务
    11. ---> 软件包 libcom_err-devel.x86_64.0.1.42.9-19.el7 将被 安装
    12. --> 解决依赖关系完成
    13. 依赖关系解决
    14. ========================================================================================================================================================
    15. Package 架构 版本 源 大小
    16. ========================================================================================================================================================
    17. 正在安装:
    18. e2fsprogs-devel x86_64 1.42.9-19.el7 local 73 k
    19. 为依赖而安装:
    20. libcom_err-devel x86_64 1.42.9-19.el7 local 32 k
    21. 事务概要
    22. ========================================================================================================================================================
    23. 安装 1 软件包 (+1 依赖软件包)
    24. 总下载量:105 k
    25. 安装大小:179 k
    26. Downloading packages:
    27. --------------------------------------------------------------------------------------------------------------------------------------------------------
    28. 总计 3.0 MB/s | 105 kB 00:00:00
    29. Running transaction check
    30. Running transaction test
    31. Transaction test succeeded
    32. Running transaction
    33. 正在安装 : libcom_err-devel-1.42.9-19.el7.x86_64 1/2
    34. 正在安装 : e2fsprogs-devel-1.42.9-19.el7.x86_64 2/2
    35. 验证中 : libcom_err-devel-1.42.9-19.el7.x86_64 1/2
    36. 验证中 : e2fsprogs-devel-1.42.9-19.el7.x86_64 2/2
    37. 已安装:
    38. e2fsprogs-devel.x86_64 0:1.42.9-19.el7
    39. 作为依赖被安装:
    40. libcom_err-devel.x86_64 0:1.42.9-19.el7
    41. 完毕!
    1. [root@localhost yum.repos.d]#
    2. [root@localhost yum.repos.d]# ls
    3. local.repo repo.bak
    4. [root@localhost yum.repos.d]# cd /opt
    5. [root@localhost opt]# ls
    6. rh extundelete-0.2.4.tar.bz2
    7. [root@localhost opt]# tar xf extundelete-0.2.4.tar.bz2
    8. [root@localhost opt]# ls
    9. extundelete-0.2.4 extundelete-0.2.4.tar.bz2 rh
    10. [root@localhost opt]#
    1. [root@localhost opt]#
    2. [root@localhost opt]# cd extundelete-0.2.4/
    3. [root@localhost extundelete-0.2.4]# ls
    4. acinclude.m4 autogen.sh configure depcomp LICENSE Makefile.in README
    5. aclocal.m4 config.h.in configure.ac install-sh Makefile.am missing src
    6. [root@localhost extundelete-0.2.4]#
    7. [root@localhost extundelete-0.2.4]# ./configure --prefix=/usr/local/extundelete//进行配置指定安装目录
    8. Configuring extundelete 0.2.4
    9. Writing generated files to disk
    10. [root@localhost extundelete-0.2.4]#
    1. [root@localhost extundelete-0.2.4]# make && make install
    2. make -s all-recursive
    3. Making all in src
    4. extundelete.cc: 在函数‘ext2_ino_t find_inode(ext2_filsys, ext2_filsys, ext2_inode*, std::string, int)’中:
    5. extundelete.cc:1272:29: 警告:在 {} 内将‘search_flags’从‘int’转换为较窄的类型‘ext2_ino_t {aka unsigned int}’ [-Wnarrowing]
    6. buf, match_name2, priv, 0};
    7. ^
    8. Making install in src
    9. /usr/bin/install -c extundelete '/usr/local/extundelete/bin'
    10. [root@localhost extundelete-0.2.4]#
    11. [root@localhost extundelete-0.2.4]# cd /usr/local/
    12. [root@localhost local]# cd /usr/local
    13. [root@localhost local]# ls
    14. bin extundelete include lib64 sbin src
    15. etc games lib libexec share
    16. [root@localhost local]#
    17. [root@localhost local]# cd extundelete/
    18. [root@localhost extundelete]# ls
    19. bin
    20. [root@localhost extundelete]#
    21. [root@localhost extundelete]# ls bin/
    22. extundelete
    23. [root@localhost extundelete]# ls
    24. bin
    25. [root@localhost extundelete]#
    26. [root@localhost extundelete]# cd bin/
    27. [root@localhost bin]# ls
    28. extundelete
    29. [root@localhost bin]#
    30. [root@localhost bin]# echo $PATH
    31. /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    32. [root@localhost bin]# ln -s /usr/local/extundelete/bin/extundelete /usr/local/bin/
    33. //创建软链接放入PATH环境变量目录中
    34. [root@localhost bin]#
    35. [root@localhost bin]# cd
    36. [root@localhost ~]# ex
    37. ex exec exempi exit expand export exportfs expr extundelete

     软件已经安装完毕

    1. [root@localhost ~]# df -hT
    2. 文件系统 类型 容量 已用 可用 已用% 挂载点
    3. devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
    4. tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
    5. tmpfs tmpfs 1.9G 13M 1.9G 1% /run
    6. tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
    7. /dev/mapper/centos-root xfs 36G 4.4G 31G 13% /
    8. /dev/sda1 xfs 1014M 187M 828M 19% /boot
    9. tmpfs tmpfs 378M 12K 378M 1% /run/user/42
    10. tmpfs tmpfs 378M 0 378M 0% /run/user/0
    11. /dev/sdb1 ext3 20G 45M 19G 1% /xy101
    12. /dev/sr0 iso9660 4.5G 4.5G 0 100% /mnt
    13. [root@localhost ~]#
    14. [root@localhost ~]# cd /xy101/
    15. [root@localhost xy101]# ls
    16. lost+found
    17. [root@localhost xy101]# rm -rf *
    18. [root@localhost xy101]#
    1. [root@localhost xy101]# echo 'dh like jinmao' > dh.txt
    2. [root@localhost xy101]# echo 'kk like dalanqiu' > kk.txt
    3. [root@localhost xy101]# echo 'w like bb' > w.txt
    4. [root@localhost xy101]# echo 'y like me' > y.txt
    5. [root@localhost xy101]#

    1. [root@localhost xy101]# ls
    2. dh.txt kk.txt w.txt y.txt
    3. [root@localhost xy101]# extundelete /dev/sdb1 --inode 2 //指定磁盘文件
    4. NOTICE: Extended attributes are not restored.
    5. WARNING: EXT3_FEATURE_INCOMPAT_RECOVER is set.
    6. The partition should be unmounted to undelete any files without further data loss.
    7. If the partition is not currently mounted, this message indicates
    8. it was improperly unmounted, and you should run fsck before continuing.
    9. If you decide to continue, extundelete may overwrite some of the deleted
    10. files and make recovering those files impossible. You should unmount the
    11. file system and check it with fsck before using extundelete.
    12. Would you like to continue? (y/n)
    13. y
    14. Loading filesystem metadata ... 160 groups loaded.
    15. Group: 0
    16. Contents of inode 2:
    17. 0000 | ed 41 00 00 00 10 00 00 a5 de 27 66 76 de 27 66 | .A........'fv.'f
    18. 0010 | 76 de 27 66 00 00 00 00 00 00 02 00 08 00 00 00 | v.'f............
    19. 0020 | 00 00 00 00 05 00 00 00 03 06 00 00 00 00 00 00 | ................
    20. 0030 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
    21. 0040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
    22. 0050 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
    23. 0060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
    24. 0070 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
    25. 0080 | 1c 00 00 00 38 e9 48 0f 38 e9 48 0f 4c fa e0 31 | ....8.H.8.H.L..1
    26. 0090 | 6a c2 27 66 00 00 00 00 00 00 00 00 00 00 00 00 | j.'f............
    27. 00a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
    28. 00b0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
    29. 00c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
    30. 00d0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
    31. 00e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
    32. 00f0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
    33. Inode is Allocated
    34. File mode: 16877
    35. Low 16 bits of Owner Uid: 0
    36. Size in bytes: 4096
    37. Access time: 1713888933
    38. Creation time: 1713888886
    39. Modification time: 1713888886
    40. Deletion Time: 0
    41. Low 16 bits of Group Id: 0
    42. Links count: 2
    43. Blocks count: 8
    44. File flags: 0
    45. File version (for NFS): 0
    46. File ACL: 0
    47. Directory ACL: 0
    48. Fragment address: 0
    49. Direct blocks: 1539, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
    50. Indirect block: 0
    51. Double indirect block: 0
    52. Triple indirect block: 0
    53. File name | Inode number | Deleted status
    54. . 2
    55. .. 2
    56. dh.txt 11
    57. kk.txt 12
    58. w.txt 13
    59. y.txt 14
    60. [root@localhost xy101]#

     

    1. [root@localhost xy101]# rm -f dh.txt w.txt y.txt //模拟误删dh.txt w.txt y.txt,这三个文件
    2. [root@localhost xy101]# ls
    3. kk.txt
    4. [root@localhost xy101]#
    1. [root@localhost xy101]# extundelete /dev/sdb1 --inode 2
    2. NOTICE: Extended attributes are not restored.
    3. WARNING: EXT3_FEATURE_INCOMPAT_RECOVER is set.
    4. The partition should be unmounted to undelete any files without further data loss.
    5. If the partition is not currently mounted, this message indicates
    6. it was improperly unmounted, and you should run fsck before continuing.
    7. If you decide to continue, extundelete may overwrite some of the deleted
    8. files and make recovering those files impossible. You should unmount the
    9. file system and check it with fsck before using extundelete.
    10. Would you like to continue? (y/n)
    11. y
    12. Loading filesystem metadata ... 160 groups loaded.
    13. Group: 0
    14. Contents of inode 2:
    15. 0000 | ed 41 00 00 00 10 00 00 81 96 28 66 34 96 28 66 | .A........(f4.(f
    16. 0010 | 34 96 28 66 00 00 00 00 00 00 02 00 08 00 00 00 | 4.(f............
    17. 0020 | 00 00 00 00 08 00 00 00 03 06 00 00 00 00 00 00 | ................
    18. 0030 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
    19. 0040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
    20. 0050 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
    21. 0060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
    22. 0070 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
    23. 0080 | 1c 00 00 00 60 67 81 c3 60 67 81 c3 ec 1c 66 cd | ....`g..`g....f.
    24. 0090 | 6a c2 27 66 00 00 00 00 00 00 00 00 00 00 00 00 | j.'f............
    25. 00a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
    26. 00b0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
    27. 00c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
    28. 00d0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
    29. 00e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
    30. 00f0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
    31. Inode is Allocated
    32. File mode: 16877
    33. Low 16 bits of Owner Uid: 0
    34. Size in bytes: 4096
    35. Access time: 1713936001
    36. Creation time: 1713935924
    37. Modification time: 1713935924
    38. Deletion Time: 0
    39. Low 16 bits of Group Id: 0
    40. Links count: 2
    41. Blocks count: 8
    42. File flags: 0
    43. File version (for NFS): 0
    44. File ACL: 0
    45. Directory ACL: 0
    46. Fragment address: 0
    47. Direct blocks: 1539, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
    48. Indirect block: 0
    49. Double indirect block: 0
    50. Triple indirect block: 0
    51. File name | Inode number | Deleted status
    52. . 2
    53. .. 2
    54. dh.txt 11 Deleted
    55. kk.txt 12
    56. w.txt 13 Deleted
    57. y.txt 14 Deleted
    58. [root@localhost xy101]#

     

    1. root@localhost ~]# umount /dev/sdb1 //如果磁盘被误删,第一件事就是解挂,不要让磁盘进行数据写入
    2. [root@localhost ~]# extundelete /dev/sdb1 --restore-all
    3. NOTICE: Extended attributes are not restored.
    4. Loading filesystem metadata ... 160 groups loaded.
    5. Loading journal descriptors ... 56 descriptors loaded.
    6. Searching for recoverable inodes in directory / ...
    7. 3 recoverable inodes found.
    8. Looking through the directory structure for deleted files ...
    9. 0 recoverable inodes still lost.
    10. [root@localhost ~]#
    11. [root@localhost ~]# ls
    12. abc abc.txt anaconda-ks.cfg initial-setup-ks.cfg RECOVERED_FILES 公共 模板 视频 图片 文档 下载 音乐 桌面
    13. [root@localhost ~]#

    1. [root@localhost ~]# cd RECOVERED_FILES
    2. [root@localhost RECOVERED_FILES]# ls //可以看见被删除文件
    3. dh.txt w.txt y.txt
    4. [root@localhost RECOVERED_FILES]#

     

    1. [root@localhost RECOVERED_FILES]# cat *
    2. dh like jinmao
    3. w like bb
    4. y like me
    5. [root@localhost RECOVERED_FILES]#

    Linux日志

    内核及系统日志

    #内核及公共消息日志/var/log/messages记录Linux内核消息及各种应用程序的公共日志信息,包括启动、IO错误、网络错误、程序故障等。对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的事件记录信息。
    #计划任务日志/var/log/cron记录crond计划任务产生的事件信息
    #系统引导日志/var/log/dmesg记录Linux系统在引导过程中的各种事件信息
    #邮件系统日志/var/log/maillog记录进入或发出系统的电子邮件活动

    用户登录日志

    /var/log/secure记录用户认证相关的安全事件信息
    /var/log/lastlog记录每个用户最近的登录事件。二进制格式
    /var/log/wtmp记录每个用户登录、注销及系统启动和停机事件。二进制格式
    /var/run/btmp记录失败的、错误的登录尝试及验证事件。二进制格式

    vim /etc/rsyslog.conf        #查看rsyslog.conf配置文件,规则配置格式:【设备.级别    动作】    
    *.info;mail.none;authpriv.none;cron.none         /var/log/messages

    *.info        #表示info等级及以上的所有等级的信息都写到对应的日志文件里
    mail.none                  #表示某事件的信息不写到日志文件里(这里比如是邮件)

    设备字段说明:
    auth                    用户认证时产生的日志
    authpriv              ssh、ftp等登录信息的验证信息
    daemon               一些守护进程产生的日志
    ftp                       FTP产生的日志
    lpr                       打印相关活动
    mark                   rsyslog服务内部的信息,时间标识
    news                  网络新闻传输协议(nntp)产生的消息。
    syslog                系统日志
    uucp                   Unix-to-Unix Copy 两个unix之间的相关通信
    console                针对系统控制台的消息。
    cron                   系统执行定时任务产生的日志。
    kern                    系统内核日志
    local0~local7        自定义程序使用
    mail                     邮件日志
    user                    用户进程

    程序日志 

    由应用程序配置文件自行定义的

    数字等级越小,日志级别越高,日志事件越重要   

    0EMERG(紧急)会导致主机系统不可用的情况。如系统崩溃
    1 ALERT(警告)必须马上采取措施解决的问题。如数据库被破坏
    2CRIT(严重)比较严重的情况。如硬盘错误,可能会阻碍程序的部分功能
    3ERR(错误)运行出现错误。不是非常紧急,尽快修复的
    4WARNING(提醒) 可能影响系统功能,需要提醒用户的重要事件。不是错误,如磁盘用了85%等
    5NOTICE(注意)不会影响正常功能,但是需要注意的事件。无需处理
    6 INFO(信息)一般信息。正常的系统信息
    7

    DEBUG(调试)

    程序或系统调试信息等。包含详细开发的信息,调试程序时使用
     none没有优先级,不记录任何日志消息。

    日志级别:debug,  info, notice,   warn, error, crit, alert, emerg     none
                            7     6          5           4       3      2     1         0               

     举例:  

    mail.info  /var/log/maillog :比指定级别更高的日志级别,包括指定级别自身,保存到/var/log/maillog中
    mail.=info  /var/log/maillog :明确指定日志级别为info,保存至/var/log/maillog
    mail.!info  /var/log/maillog :除了指定的日志级别(info)所有日志级别信息,保存至/var/log/maillog
    *.info      /var/log/maillog :所有facility的info级别,保存至/var/log/maillog
    mail.*     /var/log/maillog :mail的所有日志级别信息,都保存至/var/log/maillog
    mail.notice;news.info  /var/log/maillog :mail的notice以上记得日志级别和news的info以上的级别保存至/var/log/maillog
    mail,news.crit  -/var/log/maillog :mail和news的crit以上的日志级别保存/var/log/maillog中;“-”代表异步模式 

    Linux系统日志管理服务  rsyslog

    配置文件    /etc/rsyslog.conf

    集中式收集管理日志方案  

    rsyslog     shell/python脚本     ELK(elasticsearch+logstash+kibana)      Loki+promtail+grafana

     Linux系统日志管理

    Linux系统日志管理   journalctl         #查看所有日志(默认情况下,只保存本次启动的日志)

                                                     -r                            #-r表示倒序,从尾部看
                                                     -u 服务名              #查看某个服务的日志
                                                     -k                           #查看内核日志(不显示应用日志)
                                                     -b -0/-1                 #查看系统本次启动的日志
                                                     -f                            #显示尾部指定行数的日志
                                                     _PID=<进程PID>   #查看指定进程的日志
                                                     _UID=<账户UID>   #查看指定用户的日志

  • 相关阅读:
    服务器数据恢复—异常断电导致ESXi虚拟机无法启动的数据恢复案例
    git--恢复/撤销 相关命令--使用/实例
    人工智能基础_机器学习030_ElasticNet弹性网络_弹性回归的使用---人工智能工作笔记0070
    14:00面试,14:06就出来了,问的问题过于变态了。。。
    Axure设计之引入ECharts图表
    JAVA实现数组模拟队列
    Java技能树-网络-UDP-DatagramSocket
    阿里巴巴找黄金宝箱(V)--滑动窗口
    143. 最大异或对(01字典树)
    JSP自定义标签之自定义分页01
  • 原文地址:https://blog.csdn.net/2301_82109773/article/details/138110511