范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Linux数据恢复工具之extundelete

  简介
  在Linux系统下,通过命令"rm -rf"可以将任何数据直接从硬盘删除,并且没有任何提示,同时Linux下也没有与Windows下回收站类似的功能,也就意味着,数据在删除后通过常规的手段是无法恢复的,因此使用这个命令要非常慎重。在使用rm命令的时候,比较稳妥的方法是把命令参数放到后面,这样有一个提醒的作用。其实还有一个方法,那就是将要删除的东西通过mv命令移动到系统下的/tmp目录下,然后写个脚本定期执行清除操作,这样做可以在一定程度上降低误删除数据的危险性。
  其实保证数据安全最好的方法是做好备份,虽然备份不是万能的,但是没有备份是万万不行的。任何数据恢复工具都有一定局限性,都不能保证完整地恢复出所有数据,因此,把备份作为核心,把数据恢复工具作为辅助是运维人员必须坚持的一个准则。
  在Linux下,基于开源的数据恢复工具有很多,常见的有debugfs、R-Linux、ext3grep、extundelete等,比较常用的有ext3grep和extundelete,这两个工具的恢复原理基本一样,只是extundelete功能更加强大。 extundelete的恢复原理
  在Linux下可以通过"ls –id"命令来查看某个文件或者目录的inode值,例如查看根目录的inode值,可以输入: [root@cloud1 ~]# ls -id  /  2 /
  由此可知,根目录的inode值一般为2。
  在利用extundelete恢复文件时并不依赖特定文件格式,首先extundelete会通过文件系统的inode信息(根目录的inode一般为2)来获得当前文件系统下所有文件的信息,包括存在的和已经删除的文件,这些信息包括文件名和inode。然后利用inode信息结合日志去查询该inode所在的block位置,包括直接块,间接块等信息。最后利用dd命令将这些信息备份出来,从而恢复数据文件。 安装
  yum直接安装: yum install -y extundelete
  也可以编译安装: wget  http://zy-res.oss-cn-hangzhou.aliyuncs.com/server/extundelete-0.2.4.tar.bz2 yum -y install  bzip2  e2fsprogs-devel  e2fsprogs  gcc-c++ make tar -xvjf extundelete-0.2.4.tar.bz2 cd extundelete-0.2.4 ./configure make && make install
  使用方法extundelete --help [root@oraclelhr reco]# extundelete --help Usage: extundelete [options] [--] device-file Options:   --version, -[vV]       Print version and exit successfully.   --help,                Print this help and exit successfully.   --superblock           Print contents of superblock in addition to the rest.                          If no action is specified then this option is implied.   --journal              Show content of journal.   --after dtime          Only process entries deleted on or after "dtime".   --before dtime         Only process entries deleted before "dtime". Actions:   --inode ino            Show info on inode "ino".   --block blk            Show info on block "blk".   --restore-inode ino[,ino,...]                          Restore the file(s) with known inode number "ino".                          The restored files are created in ./RECOVERED_FILES                          with their inode number as extension (ie, file.12345).   --restore-file "path"  Will restore file "path". "path" is relative to root                          of the partition and does not start with a "/"                          The restored file is created in the current                          directory as "RECOVERED_FILES/path".   --restore-files "path" Will restore files which are listed in the file "path".                          Each filename should be in the same format as an option                          to --restore-file, and there should be one per line.   --restore-directory "path"                          Will restore directory "path". "path" is relative to the                          root directory of the file system.  The restored                          directory is created in the output directory as "path".   --restore-all          Attempts to restore everything.   -j journal             Reads an external journal from the named file.   -b blocknumber         Uses the backup superblock at blocknumber when opening                          the file system.   -B blocksize           Uses blocksize as the block size when opening the file                          system.  The number should be the number of bytes.   --log 0                Make the program silent.   --log filename         Logs all messages to filename. --log D1=0,D2=filename   Custom control of log messages with comma-separated    Examples below:       list of options.  Dn must be one of info, warn, or    --log info,error      error.  Omission of the "=name" results in messages    --log warn=0          with the specified level to be logged to the console.    --log error=filename  If the parameter is "=0", logging for the specified                          level will be turned off.  If the parameter is                          "=filename", messages with that level will be written                          to filename.    -o directory          Save the recovered files to the named directory.                          The restored files are created in a directory                          named "RECOVERED_FILES/" by default. 其中,参数(options)有:
  –version, -[vV],显示软件版本号。
  –help,显示软件帮助信息。
  –superblock,显示超级块信息。
  –journal,显示日志信息。
  –after dtime,时间参数,表示在某段时间之后被删的文件或目录。
  –before dtime,时间参数,表示在某段时间之前被删的文件或目录。
  动作(action)有:
  –inode ino,显示节点"ino"的信息。
  –block blk,显示数据块"blk"的信息。
  –restore-inode ino[,ino,…],恢复命令参数,表示恢复节点"ino"的文件,恢复的文件会自动放在当前目录下的RESTORED_FILES文件夹中,使用节点编号作为扩展名。
  –restore-file ‘path’,恢复命令参数,表示将恢复指定路径的文件,并把恢复的文件放在当前目录下的RECOVERED_FILES目录中。
  –restore-files ‘path’,恢复命令参数,表示将恢复在路径中已列出的所有文件。
  –restore-all,恢复命令参数,表示将尝试恢复所有目录和文件。
  -j journal,表示从已经命名的文件中读取扩展日志。
  -b blocknumber,表示使用之前备份的超级块来打开文件系统,一般用于查看现有超级块是不是当前所要的文件。
  -B blocksize,通过指定数据块大小来打开文件系统,一般用于查看已经知道大小的文件  常用命令-- 查看sdb1 分区根目录下面可被恢复的文件及文件夹 extundelete /dev/sdb1 --inode 2   -- 恢复单个文件,恢复对应inode的文件,例如1.txt的inode为12,那么此命令即恢复1.txt extundelete /dev/sdb1 --restore-inode 12 extundelete /dev/sdb1 --restore-file  filename  -- 恢复目录,空目录不会被恢复 extundelete /dev/sdb1 --restore-directory  -- 恢复所有文件 extundelete /dev/sdb1 --restore-all 注意
  在数据删除之后,首先要卸载被删除数据所在的磁盘或分区,如果是系统根据分区遭到误删除,就需要进入单用户模式下,将根分区以只读的方式挂载。
  原因:因为文件删除之后,仅仅是将文件的inode节点中的扇区指针清零,实际上文件还存在磁盘上面,如果磁盘以读写方式挂载,这些删除的数据块可能会被系统从新分配出去,这些数据块被覆盖之后,这些数据就真的丢失了,所以以只读的方式挂载,尽可能避免数据被覆盖。 文件句柄存在
  linux删除文件还原可以分为两种情况,一种是删除以后进程存在删除信息,一种是删除以后进程都找不到,只有借助于工具还原,例如extundelete工具。
  对于删除文件后,文件句柄还存在的情况,这种一般是有活动的进程存在持续标准输入或输出,到时文件被删除后,进程PID还是存在。这也就是有些服务器删除一些文件但是磁盘不释放的原因。
  恢复过程可以参考:http://blog.itpub.net/26736162/viewspace-1623938/
  通过一个 终端对一个测试文件做cat追加操作: [root@backup ~]# echo  "hello  py" > testdelete.py [root@backup ~]# cat  >> testdelete.py  hello delete
  另外一个终端查看这个文件可以清楚的看到内容: [root@backup ~]# cat testdelete.py  hello  py hello delete
  此时,在当前服务器删除文件rm -f ./testdelete.py
  查看这个目录,文件已经不存在了,那么现在我们将其恢复出来。
  1,lsof查看删除的文件进程是否还存在。这里用到一个 lsof,如没有安装请自行yum或者apt-get。类似这种情况,我们可以先lsof查看删除的文件 是否还在: [root@backup ~]# lsof | grep deleted mysqld     1512   mysql    5u      REG              252,3          0    6312397 /tmp/ibzW3Lot (deleted) cat       20464    root    1w      REG              252,3         23    1310722 /root/testdelete.py (deleted)
  幸运的是这种情况进程还存在 ,那么开始进行恢复 操作。
  2,恢复。
  恢复命令: cp /proc/pid/fd/1  /指定目录/文件名
  进入 进程目录,一般是进入/proc/pid/fd/,针对当前情况: [root@backup ~]# cd   /proc/20464/fd [root@backup fd]# ll total 0 lrwx------ 1 root root 64 Nov 15 18:12 0 > /dev/pts/1 l-wx------ 1 root root 64 Nov 15 18:12 1 > /root/testdelete.py (deleted) lrwx------ 1 root root 64 Nov 15 18:12 2 > /dev/pts/1
  恢复操作: cp 1 /tmp/testdelete.py
  查看文件: [root@backup fd]# cat  /tmp/testdelete.py hello  py hello delete
  恢复完成。 extundelete恢复示例
  创建准备删除的目录并echo一个 带有内容的文件: [root@backup yunwei]# tree .   deletetest       mail           test.py   lost+found   passwd   3 directories, 2 files [root@backup yunwei]# cat /yunwei/deletetest/mail/test.py  hello Dj [root@backup yunwei]# tail  -2  passwd  haproxy:x:500:502::/home/haproxy:/bin/bash tcpdump:x:72:72::/:/sbin/nologin
  执行删除操作: [root@backup yunwei]# rm  -rf    ./* [root@backup yunwei]# ll total 0
  现在开始进行删除文件的恢复。这种情况一般是没有守护者进行或者后台进程对其持续输入,所以删除就删除 了,lsof也看不到。就要借助于工具。这里我们采用的工具是extundelete第三方工具。恢复步骤如下:
  1,停止对当前分区做任何操作,防止inode被覆盖。inode被覆盖基本就告别自行车了。比如停止所在分区的服务,卸载目录所在的设备,有必要的情况下都可以断网。
  2,通过dd命令对 当前分区进行备份,防止第三方软件恢复失败导致数据丢失。适合数据非常重要的情况,这里测试,就没有备份,如备份可以考虑如下方式: dd if=/path/filename of=/dev/vdc1
  3,通过umount命令,对当前设备分区卸载。或者fuser 命令。 umount /dev/vdb1 或者 umount /yunwei
  如果提示设备busy,可以用fuser命令强制卸载:fuser -m -v -i -k /yunwei
  4,下载第三方工具extundelete安装,搜索误删除的文件进行还原。 wget   tar jxvf extundelete-0.2.4.tar.bz2 cd  extundelete-0.2.4 ./configure  make make  install
  扫描误删除的文件: [root@backup extundelete-0.2.4]# extundelete  --inode 2 /dev/vdb1 NOTICE: Extended attributes are not restored. Loading filesystem metadata ... 8 groups loaded. Group: 0 Contents of inode 2:   . .省略N行   File name                                       | Inode number | Deleted status .                                                 2 ..                                                2 lost+found                                        11             Deleted deletetest                                        12             Deleted passwd                                            14             Deleted
  通过扫描发现了我们删除的文件夹,现在执行恢复操作。
  (1)恢复单一文件passwd [root@backup /]# extundelete /dev/vdb1 --restore-file passwd    NOTICE: Extended attributes are not restored. Loading filesystem metadata ... 8 groups loaded. Loading journal descriptors ... 46 descriptors loaded. Successfully restored file passwd
  恢复文件是放到了当前目录RECOVERED_FILES。
  查看恢复的文件: [root@backup /]# tail  -5  RECOVERED_FILES/passwd  mysql:x:497:500::/home/mysql:/bin/false nginx:x:496:501::/home/nginx:/sbin/nologin zabbix:x:495:497:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin haproxy:x:500:502::/home/haproxy:/bin/bash tcpdump:x:72:72::/:/sbin/nologin
  (2)恢复目录deletetest [root@backup /]# extundelete /dev/vdb1 --restore-directory  deletetest  NOTICE: Extended attributes are not restored. Loading filesystem metadata ... 8 groups loaded. Loading journal descriptors ... 46 descriptors loaded. Searching for recoverable inodes in directory deletetest ...  5 recoverable inodes found. Looking through the directory structure for deleted files ...  [root@backup /]# cat  RECOVERED_FILES/deletetest/mail/test.py  hello Dj
  (3)恢复所有 [root@backup /]# extundelete /dev/vdb1 --restore-all NOTICE: Extended attributes are not restored. Loading filesystem metadata ... 8 groups loaded. Loading journal descriptors ... 46 descriptors loaded. Searching for recoverable inodes in directory / ...  5 recoverable inodes found. Looking through the directory structure for deleted files ...  0 recoverable inodes still lost.  [root@backup /]# cd RECOVERED_FILES/ [root@backup RECOVERED_FILES]# tree .   deletetest       mail           test.py   passwd   2 directories, 2 files
  (4),恢复指定inode。 [root@backup /]# extundelete /dev/vdb1 --restore-inode 14 NOTICE: Extended attributes are not restored. Loading filesystem metadata ... 8 groups loaded. Loading journal descriptors ... 46 descriptors loaded. [root@backup /]# tail  -5   /RECOVERED_FILES/file.14  mysql:x:497:500::/home/mysql:/bin/false nginx:x:496:501::/home/nginx:/sbin/nologin zabbix:x:495:497:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin haproxy:x:500:502::/home/haproxy:/bin/bash tcpdump:x:72:72::/:/sbin/nologin
  注意恢复inode的时候,恢复 出来的文件名和之前不一样,需要单独进行改名。内容是没问题的。
  觉得写得好的小伙伴给个点赞+关注啦,谢谢~
  如果有写得不正确的地方,麻烦指出,感激不尽。
  同时非常期待小伙伴们能够关注,后面慢慢推出更好的干货~嘻嘻

Google算法更新外贸网站要符合移动端友好设计移动端友好是什么意思?可以看一下你的外贸网站在手机上打开是什么效果,加载缓慢?排版混乱?字体太小?弹窗关不掉?这就是一个典型的不符合移动端友好的问题网站。为什么说移动端友好非常的重独立官网才是未来,每家企业网站都值得用LTD重做一遍前不久微信10周年的微信之夜上,腾讯高级执行副总裁微信事业群总裁张小龙进行了一段演讲,其中着重强调了视频号的意义以及在未来的发展前景。他说在未来,视频会成为企业官网,正如他也曾说过不仅仅是私域,任何生意中内容即是核心,生意表达即为内容什么是私域?私域在定义上与我们熟知的互联网公域有着明显区别,相比起公域中的流量,私域可以做到更加个性化多样化的触达,其品牌和客户也更有黏性。但目前市面上的私域SaaS产品同质化情况Google将针对在英国奥地利土耳其投放广告收取新费用近日,有客户收到Google官方邮件通知表示,从11月1日起,对针对英国土耳其和奥地利投放的GoogleAds将收取新的费用。费用包括监管运营费用数字服务税费用。邮件通知如下尊敬的交流指导数字化营销新思路2021年10月27日,杭州电子商务研究院院长赵浩兴教授杭州跨境电商协会李星慧秘书长(以下简称研究院协会)一行人莅临贰贰网络(集团)进行交流指导,交流指导数字化营销新思路。在参观过在线抽奖限时秒杀拼团抢购,别的商城有的功能你也可以拥有相信不少从事电商行业的商家们都有过在大平台开店的经历吧?不管是在创业初期想要借助大平台走出第一步,或者是在有官网的前提下,还想要借助大平台的渠道获得客流量,投身于第三方大平台似乎都海外线上营销渠道如何选?哪个最值得投资?海外线上推广怎么选?作为一名外贸行业的从业者,一定心中都有自己的答案,但是推广渠道如此之多,如何把握重点,找到适合自己的推广渠道呢?今天就来和大家一起分享这个话题。首先海外线上推广3分钟遭疯抢!能追剧能健身的OPPO智能电视S1太秀了双11马上就要来了,相信很多游戏迷们都已经在各大电商平台搜游戏主机的价格了吧?不论你是打算入手PS4还是switch,额外配上一台好电视作为显示器同样很重要。而作为今年电视行业双1旗舰级耳机能不过千?OPPOEncoX做到了,而且很标杆在AirPodsProWF1000XM3等外国品牌真无线耳机盛行的当下,不少人期待国产能有一款能与之比拟的产品,而在最近OPPO智美生活发布会上,官方公布的全新的OPPOEncoX三星下一代旗舰机配置曝光,直面屏or曲面屏?你更喜欢哪个?三星发布了第二款旗舰处理器三星exynos1080,它采用5nm技术和A78g78架构。安兔兔的得分超过69万,仅比华为mate40pro的麒麟9000低5分。然而,这并不是三星的私人影院直接搬回家,OPPO智能电视S1将带来顶级视听体验随着科技的发展,智能电视的功能变得越来越丰富,进一步取代传统电视成为电视行业成为了绝对主力。10月19日,OPPO线下正式举办了OPPO智美生活发布会,其中最为之亮眼的就是OPPO
因需求放缓,苹果计划在下季度将iPhoneSE减产20周一(3月28日),日本经济新闻援引知情人士消息称,由于乌克兰危机和通货膨胀导致需求放缓,苹果公司计划降低iPhone和AirPod的产量。根据报道,苹果计划在下个季度将iPhon欧盟数字市场法预计今年10月生效,直指亚马逊苹果谷歌等科技巨头21世纪经济报道记者张雅婷实习生高艺广州报道据欧盟委员会官方消息,欧盟委员会执行副主席竞争事务专员玛格丽特维斯塔格日前在演讲中表示,2020年12月公布的数字市场法(Digital苹果WWDC2022或定于6月6日M2芯片的iPadPro要来了?自从苹果的春季新品发布会结束后,接下来值得期待就是开发者大会和一年一度的秋季新品发布会了。根据据苹果知名爆料人JonProsser透露,苹果今年可能会在6月6日举行开发者大会,并且安卓之光怒降1500,为何受伤的总是抢首发用户?每年34月份是手机厂商集体上新的时间节点。全新制程工艺处理器规格更高的影像元器件更快更稳地快充技术贴心实用的用机功能都在不断刺激消费者的购机心理,本着尝鲜好奇心理和买新不买旧的理念华为或将推出巨屏手机!配6000mAh电池,后置镜头模组类似启瓶器大屏手机在当下还是很深得用户芳心的,但我们发现很少有高端旗舰机型做大屏设计,一方面是成本问题,一方面则是受众群体偏少一些。不过华为似乎有一个大胆的决定,爆料称华为或许会在未来发布一滴滴口碑值有变,合规成派单量关键,无证司机还没开始就输了?网约车市场真是一波三折,资本撤退运力不足订单下滑,平台和司机身陷信任危机,不再是无懈可击。下半场才刚刚开始,运力争夺日益激烈,滴滴动真格了,阳光出行哈啰一喂顺风车等后来者可谓是压力数字孪生技术与工程实践全套PPT(共计7章,287页)来源机工教育原创出品球知名的未来学家ThomasFrey预测,到2022年,85的物联网平台将使用某种数字孪生技术进行监控,并且在智能家居管理中心工业设备监控远程操控智慧城市管理现一分钟了解DNA比对工作是什么一分钟告诉你DNA比对工作的原理!人都是由受精卵发育而来,受精卵由父母双方各提供一半基因。基因又由ATGC四种碱基按父母基因的规律排列而成。当受精卵进行发育细胞分裂等过程以后,就演研究发现,男生脚趾最怕痒,女生呢?作者李木子TickleFoot图片来源DonSamithaElvitigala美国计算机学会人机交互汇刊日前发布的一项研究发现,女性脚底最怕痒的位置是足弓中心,而对于男性来说,则是今日美股美股三大指数上涨,科技股领涨,苹果连续十个交易日收涨3月29日,资本邦了解到,截至美东时间3月28日收盘,美股三大指数上涨。道指涨94。65点,涨幅为0。27,报34955。89点纳指涨185。60点,涨幅为1。31,报14354。传苹果将大幅削减iPhone及AirPods订单,立讯精密歌尔股份回应记者徐诗琪编辑当地时间3月28日,日经亚洲援引知情人士称,苹果公司计划将下季度的iPhoneSE产量减少20,这是近期国际形势动荡导致的消费电子产品需求削弱的迹象之一。上述报道称,