使用Linux文件恢复工具
Linux 系统管理员守则中有这么一条:“慎用 rm -rf 命令,除非你知道此命令所带来的分析后果“,不过 Linux 下删除文件并不是源码真实的删除磁盘分区中的文件,而是分析将文件的 inode 节点中的扇区指针清除,同时释放这些数据对应的源码数据块,当释放的分析jsp源码副本添加数据块被系统重新分配时,那些被删除的源码数据就会被覆盖,所以误删除数据后,分析应马上卸载文件所在的源码分区。然后使用相关工具进行恢复。分析本文以 Ubuntu . 平台为例介介绍四个(foremost、源码extundelete、分析testdisk 和 phtorec)常用的源码 Linux 删除文件恢复工具的使用方法。Linux 文件恢复的分析原理
inode 和 block
首先简单介绍一下 Linux 文件系统的最基本单元:inode。inode 译成中文就是源码索引节点,每个存储设备(例如硬盘)或存储设备的分区被格式化为文件系统后,应该有两部份,一部份是 inode,另一部份是 block,block 是用来存储数据用的。而 inode 呢,就是用来存储这些数据的信息,这些信息包括文件大小、属主、bitmap指标源码归属的用户组、读写权限等。inode 为每个文件进行信息索引,所以就有了 inode 的数值。linux 操作系统下可以使用 ls –id 命令来查看文件或者目录的 inode 值,一般”root”目录的 inode 值为 2,一个分区挂载到一个目录下时,这个”root”目录的 inode 值为 2
1
2
3
# mount /dev/sdb2 /tmp
# ls -id /tmp
2 /tmp
文件恢复的原理
本文要介绍的命令是通过文件系统的 inode 值(一般是 2 )来获取文件系统信息。在 ext3 和 ext4 文件系统中,每个文件都是通过 inode 来描述其数据存放的具体位置,当文件被删除以后,inode 的数据指针部分被清零,文件目录区没有太多变化。文件的读写都是通过 inode 来实现,当 inode 数据指针被清零以后,即便文件内容还在,也没有办法把文件内容组合出来。当 ext3 和 ext4 文件系统中的元数据 metadata 发生变化时,相应的元数据 metadata 在日志文件会有一份拷贝。比如一个文件被删除了,它的 inode 信息会在日志文件中先保存一份,然后把要删除文件 inode 相关信息清零。这个日志文件是循环使用的,当操作过多时,learnopengl源码在哪删除的文件的 inode 日志记录会被新的数据替换,这就彻底丧失了根据 inode 找回数据的机会了。如果是大量文件的删除,这个日志文件会被反复循环利用多次,只留给最后删除的那些文件的恢复机会。
使用命令行工具恢复文件
foremost 和 extundelete 简介
formost 是一个基于文件头和尾部信息以及文件的内建数据结构恢复文件的命令行工具。这个过程通常叫做数据挖掘(data carvubg)。formost 可以分析由 dd、Safeback、Encase 等生成的镜像文件,也可以直接分析驱动器。文件头和尾可以通过配置文件设置,也可以通过命令行开关使用 formost 内建的文件类型。formost 最初是由美国空军特别调查室(Air Force Office of Special Investigations)和信息系统安全研究中心(The Center for Information Systems Security Studies and Research)开发的,现在使用 GPL 许可。Foremost 支持恢复如下格式:avi, bmp, dll, doc, exe, gif, htm, jar, jpg, mbd, mov, mpg, pdf, png, ppt, rar, rif, sdw, sx, sxc, sxi, sxw, vis, wav, wmv, xls, zip。
针对 Linux 下的 ext 文件系统来说,常用的 Linux 文件删除恢复工具有 debugfs、ext3grep、extundelete 等。extundelete 是一个开源的数据恢复工具,支持 ext3、ext4 文件系统,指标系统源码其官方站点位于/Scalpel/ 下载源代码编译安装。下面看看使用方法:
使用 scalpel 工具之前,首先要修改配置文件: /etc/scalpel/scalpel.conf。
例如用户要恢复所有删除 pdf 文件,那么要在/etc/scalpel/scalpel.conf 把包括 pdf 文件格式的两行之前的# 去掉。
[...]
pdf y %PDF %EOFx0d REVERSE
pdf y %PDF %EOF REVERSE
[...]
然后保存文件。
下面看看使用方法
# scalpel /dev/sdb1 -o /RECOVERY/
其中/dev/sdb1 是目标驱动器,/RECOVERY/ 是恢复文件存储目录。目录下的 audit.txt 文件是恢复文件列表。
使用字符终端工具 testdisk 和 phtorec
testdisk 简介
testdisk 是分区表恢复、raid 恢复、分区恢复的开源免费工具(testdisk 支持如下文件系统: FAT/FAT/FAT/NTFS/ext2/ext3/ext4)。testdisk 支持的功能: 修复分区表, 恢复已删除分区,用 FAT 备份表恢复启动扇区,重建 FAT/FAT/FAT 启动扇区,修复 FAT 表,重建 NTFS 启动扇区,用备份表恢复 NTFS 启动扇区,用 mft 镜像表(mft mirror)修复 mft 表,查找 ext2/ext3 备份的 superblock,从 FAT,NTFS 及 ext2 文件系统恢复删除文件,从已删除的 FAT,NTFS 及 ext2/ext3 分区复制文件。
使用方法
首先安装
#apt-get install testdisk
其它 Linux 发行版用户可以在m,股市池源码可以查看当前系统运行进程占比。
这里不像top一样区分idle、system、user,这里的占比是各个进程在总运行时间里面占比。
通过sudo perf record记录采样信息,然后通过sudo perf report -s comm。
sar、ksar
sar是System Activity Report的意思,可以用于实时观察当前系统活动,也可以生成历史记录的报告。
要使用sar需要安装sudo apt install sysstat,然后对sysstat进行配置。
sar用于记录统计信息,ksar用于将记录的信息图形化输出。
ksar下载地址在: github.com/vlsi/ksar/re...
sudo gedit /etc/default/sysstat--------------------------------将 ENABLED=“false“ 改为ENABLED=“true“。 sudo gedit /etc/cron.d/sysstat--------------------------------修改sar的周期等配置。 sudo /etc/init.d/sysstat restart--------------------------------重启sar服务 /var/log/sysstat/--------------------------------------------------sar log存放目录
使用sar记录开机到目前的统计信息到文件sar.txt。
LC_ALL=C sar -A > sar.txt
PS:这里直接使用sar -A,在ksar中无法正常显示。
如下执行java -jar ksar.jar,然后Data->Load from text file...选择保存的sar.txt文件。
得到如下的图表。
还可以通过sar记录一段时间的信息,指定采样周期和采样次数。
这些命令前加上LC_ALL=C之后保存到文件中,都可以在ksar中图形化显示。
collectl、colplot
collectl是一款非常优秀并且有着丰富的命令行功能的实用程序,你可以用它来采集描述当前系统状态的性能数据。
不同于大多数其它的系统监控工具,collectl 并非仅局限于有限的系统度量,相反,它可以收集许多不同类型系统资源的相关信息,如 cpu 、disk、memory 、network 、sockets 、 tcp 、inodes 、infiniband 、 lustre 、memory、nfs、processes、quadrics、slabs和buddyinfo等。
同时collectl还可以替代常用工具,比如top、vmstat、ps、iotop等。
安装collectl:
sudo apt-get install collectl
collectl的使用很简单,默认collectl显示cpu、磁盘、网络信息。
collectl还可以显示更多的子系统信息,如果选项存在对应的大写选项,大写选项表示更细节的设备统计信息。
b – buddy info (内存碎片) c – 所有CPU的合一统计信息;C - 单个CPU的统计信息。 d – 整个文件系统Disk合一统计信息;C - 单个磁盘的统计信息。 f – NFS V3 Data i – Inode and File System j – 显示每个CPU的Interrupts触发情况;J - 显示每个中断详细触发情况。 l – Lustre m – 显示整个系统Memory使用情况;M - 按node显示内存使用情况。 n – 显示整个系统的Networks使用情况;N - 分网卡显示网络使用情况。 s – Sockets t – TCP x – Interconnect y – 对系统所有Slabs (系统对象缓存)使用统计信息;Y - 每个slab使用的详细信息。
collectl --all显示所有子系统的统计信息,包括cpu、终端、内存、磁盘、网络、TCP、socket、文件系统、NFS。
collectl --top可以代替top命令:
collectl --vmstat可以代替vmstat命令:
collectl -c1 -sZ -i:1可以代替ps命令。
collectl和一些处理分析数据工具(比如colmux、colgui、colplot)结合能提供可视化图形。
colplot是collectl工具集的一部分,其将collectl收集的数据在浏览器中图形化展示。
colplot的介绍 在此,相关源码可以再 collectl-utils下载。
解压下载的colplot之后,sudo ./INSTALL安装colplot。
安装之后重启apache服务:
suod systemctl reload apache2 sudo systemctl restart apache2
在浏览器中输入 .0.0.1/colplot/,即可使用colplot。
通过Change Dir选择存放经过collectl -P保存的数据,然后设置Plot细节、显示那些子系统、plot大小等等。
最后Generate Plot查看结果。
现在最好的,im即时聊天软件,开源的是哪个?
FlamingoIM
FlamingoIM是一款轻量级开源即时通讯软件,其服务器端、PC端和安卓端都是native应用,自主开发通信协议和界面库,无第三方库包装。适用于理解即时通讯本身的业务。
开发语言:Server:C++,PC:C++,Android:Java,IOS:Objective-C
功能包括网络相关实现。提供两部高清技术讲解视频,方便学习编译、部署、架构、模块实现及学习方法。
链接:pan.baidu.com/s/1eVaiNR... 提取码: p6rp
部分截图展示。
TeamTalk
TeamTalk是蘑菇街开源的一款即时通讯IM,代码地址为github.com/balloonwj/Te...
开发语言:Server:C++,PC:C++,Android:Java,IOS:Objective-C,Web管理:php
提供源码解析专题,覆盖服务器端、db_proxy_server、msg_server、login_server、msf、file_server、route_server等。
提供服务端网络拓扑图和客户端运行截图。
tinode
服务端代码使用Go开发,地址为tinode/chat。提供搭建服务部分截图。
CppGuide
推荐给C/C++开发者的学习资料,涵盖语言、网络编程、操作系统原理、项目源码分析、学习方法、阅读书籍、简历指导和求职技巧。
2024-12-24 00:18
2024-12-23 23:35
2024-12-23 23:02
2024-12-23 22:52
2024-12-23 22:17