精华内容
下载资源
问答
  • Linux恢复删除的文件

    万次阅读 2017-10-11 09:49:08
    linux恢复删除的文件 先介绍下一些文件的基本概念:   · 文件实际上是一个指向inode的链接, inode链接包含了文件的所有属性, 比如权限和所有者, 数据块地址(文件存储在磁盘的这些数据块中). 当你删除(rm)一个...

    linux恢复删除的文件

    先介绍下一些文件的基本概念:

     

    ·         文件实际上是一个指向inode的链接, inode链接包含了文件的所有属性, 比如权限和所有者, 数据块地址(文件存储在磁盘的这些数据块中). 当你删除(rm)一个文件, 实际删除了指向inode的链接, 并没有删除inode的内容. 进程可能还在使用. 只有当inode的所有链接完全移去, 然后这些数据块将可以写入新的数据.

    ·         proc文件系统可以协助我们恢复数据. 每一个系统上的进程在/proc都有一个目录和自己的名字, 里面包含了一个fd(文件描述符)子目录(进程需要打开文件的所有链接). 如果从文件系统中删除一个文件, 此处还有一个inode的引用:

    1.第一种方法 lsof

    当进程打开了某个文件时,只要该进程保持打开该文件,即使将其删除,它依然存在于磁盘中。这意味着,进程并不知道文件已经被删除,它仍然可以向打开该文件时提供给它的文件描述符进行读取和写入。除了该进程之外,这个文件是不可见的,因为已经删除了其相应的目录索引节点。

    /proc 目录下,其中包含了反映内核和进程树的各种文件。/proc目录挂载的是在内存中所映射的一块区域,所以这些文件和目录并不存在于磁盘中,因此当我们对这些文件进行读取和写入时,实际上是在从内存中获取相关信息。

    大多数与 lsof 相关的信息都存储于以进程的 PID 命名的目录中,即 /proc/1234 中包含的是 PID 1234 的进程的信息。每个进程目录中存在着各种文件,它们可以使得应用程序简单地了解进程的内存空间、文件描述符列表、指向磁盘上的文件的符号链接和其他系统信息。

    lsof 程序使用该信息和其他关于内核内部状态的信息来产生其输出。所以lsof 可以显示进程的文件描述符和相关的文件名等信息。也就是我们通过访问进程的文件描述符可以找到该文件的相关信息。

      进程在运行中,接下来我就把/var/log/messages这个文件删掉

    shell> rm /var/log/messages

    删掉之后,我再来看看这个进程的变化

    shell> lsof |grep /var/log/messages

    rsyslogd   1737      root    1w      REG                8,2   5716123     652638 /var/log/messages (deleted)

    大家看到有变化了吧, 对比两个之后发现多了(deleted)。要找到这个文件在哪还要看看这个

    PID:1737 FD:1 那我们有直接进入/proc/1737/FD/1ll查看一下

    shell> cd /proc/1737/fd/

    shell> ll

     

    total 0

    lrwx------ 1 root root 64 Dec 23 13:00 0 -> socket:[11442]

    l-wx------ 1 root root 64 Dec 23 13:00 1 -> /var/log/messages (deleted)

    l-wx------ 1 root root 64 Dec 23 13:00 2 -> /var/log/secure

    lr-x------ 1 root root 64 Dec 23 13:00 3 -> /proc/kmsg

    l-wx------ 1 root root 64 Dec 23 13:00 4 -> /var/log/maillog

    看到了1对应/var/log/messages (deleted),看看文件是不是我们要的文件:

    shell> head -5 1

    Nov 14 03:11:11 localhost kernel: imklog 5.8.10, log source = /proc/kmsg started.

    Nov 14 03:11:11 localhost rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="1241" x-info="http://www.rsyslog.com"] start

    Nov 14 03:11:11 localhost kernel: Initializing cgroup subsys cpuset

    Nov 14 03:11:11 localhost kernel: Initializing cgroup subsys cpu

    Nov 14 03:11:11 localhost kernel: Linux version 2.6.32-431.el6.x86_64 (mockbuild@c6b8.bsys.dev.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) ) #1 SMP Fri Nov 22 03:15:09 UTC 2013

    对比备份文件:

    shell> head -5 /var/log/message_bac

    Nov 14 03:11:11 localhost kernel: imklog 5.8.10, log source = /proc/kmsg started.

    Nov 14 03:11:11 localhost rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="1241" x-info="http://www.rsyslog.com"] start

    Nov 14 03:11:11 localhost kernel: Initializing cgroup subsys cpuset

    Nov 14 03:11:11 localhost kernel: Initializing cgroup subsys cpu

    Nov 14 03:11:11 localhost kernel: Linux version 2.6.32-431.el6.x86_64 (mockbuild@c6b8.bsys.dev.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) ) #1 SMP Fri Nov 22 03:15:09 UTC 2013

    对比发现数据是一样的,恢复

    shell> cat 1 > /var/log/messages

     

    对于许多应用程序,尤其是日志文件和数据库,这种恢复删除文件的方法非常有用。

     


    2.第二种方法  extundelete

    1. 测试误操作删除以下文件

      /usr/local/dbdata/gperftools-2.4.tar.gz  #文件
      
      /usr/local/dbdata/pcre-8.32              #目录

      执行误操作:

      # rm -rf /usr/local/dbdata/gperftools-2.4.tar.gz /usr/local/dbdata/pcre-8.32
    2. 将误操作所在分区进行只读保护

      如果确定文件被误删,在没有备份的情况下请马上对分区实施写入保护(预防新的写入覆盖误删的块数据,因此权限给只读):

       #  # 
    3. 数据恢复工具安装

      工具安装部署

      官方网站是http://extundelete.sourceforge.net/ ,其目前的稳定版本是extundelete-0.2.4.

      工具下载

       # wget https://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2

      解压安装

      依赖包

      # yum -y install gcc-c++ e2fsprogs.x86_64 e2fsprogs-devel.x86_64
      # tar -jxvf extundelete-0.2.4.tar.bz2
      # cd extundelete-0.2.4
      # ./configure
      # make && make install

      验证安装结果

      # extundelete -v
    4. 文件恢复过程

      恢复指定文件:

      原理:从根节点(inode=2)开始找到被删除文件的i节点,然后recover i节点。

      以下是模拟删除gperftools-2.4.tar.gz(文件)和pcre-8.32 (目录)

      先检测被删除的文件有哪些:

      # extundelete /dev/sdb --inode 2

       

      可以看到,有以下两个

      gperftools-2.4.tar.gz 15 Deleted
      
      pcre-8.32 655361 Deleted

      注意:恢复过程不要在误删分区进行,谨防inode. block块相互覆盖

      先恢复文件(可根据文件名进行恢复):

      # extundelete /dev/sdb --restore-file gperftools-2.4.tar.gz

       

      恢复目录(根据目:# extundelete /dev/sdb --restore-directory pcre-8.32

       

      最后会在当前目录下看到一个名为RECOVERED_FILES的目录,在目录里就可以看到被误删除的文件以及目录:

       

      根据上面操作证明extundelete 工具可以实现对误删数据的恢复,而且操作简单。

    总结:

    1. 使用rm一定要谨慎

    2. 磁盘按照功能进行分区是必要的

    3. 最少掌握一种数据恢复方式

    展开全文
  • 如何将勿操作truncate的表恢复回来 由于对于truncate命令没有回滚方法来还原,因此就需要对数据库进行恢复操作以将数据恢复回表中。 本文中将给出truncate命令后的恢复思路及步骤: RECOVER DATABASE UNTIL TIME ...

    如何将勿操作truncate的表恢复回来

    由于对于truncate命令没有回滚方法来还原,因此就需要对数据库进行恢复操作以将数据恢复回表中。
    本文中将给出truncate命令后的恢复思路及步骤:


    RECOVER DATABASE UNTIL TIME 恢复步骤方案

    注意: 在开始使用旧备份进行数据库恢复前,对当前数据库做好备份

    1. 当时是否有表的export dump文件可用?
      a. 有   -> import导入文件还原表数据
      b. 没有 -> 跳转至步骤2 
    2. 数据库是否在archivelog模式下?
      a. 是 -> 跳转至步骤3
      b. 不是 -> 跳转至步骤4
    3. 数据库在归档模式下。那么可以使用备份归档至数据库某个表被truncate前的时间点。
      a. 恢复数据库备份至另一个位置。
      b. 使用RECOVER DATABASE UNTIL TIME .....将数据库recover到truncate之前某个时间点。
      c. 从恢复的数据库中导出所需的表数据。
      d. 将数据import会原库对应被truncate数据的表中。
      e. 工作已经完成,将恢复的库删掉即可。
    4. 数据库不在归档模式下, 因此没有方法将数据库恢复到truncate之前的时间点。
      你需要联系Oracle或更第三方专业Oracle数据恢复专家来帮忙处理。

    你也可以使用FLASHBACK来回滚到TRUNCATE前以找到所需恢复的数据。
    下面的步骤将使用FLASHBACK来将数据库恢复到表TRUNCATE之前,然后使用数据库恢复方法将数据库回到当前时间点。
     

    • 给表MYOBJ插入数据行 - 这表会在之后被truncate
    SQL> insert into scott.myobj select * from all_objects;
    
    50496 rows created.
    
    SQL> /
    
    50496 rows created.
    
    SQL> select count(*) from scott.myobj;
    
      COUNT(*)
    ----------
        100992
     
    • 获取SCN - FLASHBACK将需要回到这个时间点
    SQL> select current_scn from v$database;
    
              CURRENT_SCN
    ---------------------
              15633908021
    • TRUNCATE表
    SQL> truncate table scott.myobj;
    
    Table truncated.
    
    SQL> select count(*) from scott.myobj;
    
      COUNT(*)
    ----------
             0
    • 同时我们更新数据库中其它表以验证在FLASHBACK后再进行的数据库恢复将数据库回到最新状态。
    SQL> insert into scott.myobj2 select * from scott.myobj2;
    
    356874 rows created.
    
    SQL> /
    
    713748 rows created.
    
    SQL> commit;
    
    Commit complete.
    • 关闭数据库并进行FLASHBACK
    SQL> shutdown immediate;
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> startup mount;
    ORACLE instance started.
    
    Total System Global Area  469762048 bytes
    Fixed Size                  2084880 bytes
    Variable Size             377491440 bytes
    Database Buffers           83886080 bytes
    Redo Buffers                6299648 bytes
    Database mounted.
    
    SQL> FLASHBACK DATABASE TO SCN 15633908021;
    
    Flashback complete.
    • 以只读方式打开数据库并导出被误truncate的表数据,导出的数据会在数据库recover后被导回去。
    SQL> alter database open read only;
    
    Database altered.
    
    
    SQL>  select count(*) from scott.myobj;
    
      COUNT(*)
    ----------
             100992
    
    SQL> quit
    Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    
    crashdb:/u03/oradata/crashdb/arch> exp file=scott.dmp tables=myobj
    
    Export: Release 10.2.0.4.0 - Production on Fri Feb 6 09:53:00 2009
    
    Copyright (c) 1982, 2007, Oracle.  All rights reserved.
    
    
    Username: scott
    Password:
    
    Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    Export done in US7ASCII character set and AL16UTF16 NCHAR character set
    server uses WE8ISO8859P1 character set (possible charset conversion)
    
    About to export specified tables via Conventional Path ...
    . . exporting table                          MYOBJ          100992 rows exported
    Export terminated successfully without warnings.
    • 关闭数据库后,重新mount库并进行recover
    SQL> shutdown immediate
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> startup mount;
    ORACLE instance started.
    
    Total System Global Area  696254464 bytes
    Fixed Size                  2086616 bytes
    Variable Size             184551720 bytes
    Database Buffers          503316480 bytes
    Redo Buffers                6299648 bytes
    Database mounted.
    SQL> recover database;
    Media recovery complete.
    SQL> alter database open;
    
    Database altered.
    • 正如所看到到,在数据库recover后,被truncated的表继续为0行数据,我们可以将已经导出的表数据导入恢复即可。
    SQL> select count(*) from scott.myobj;
    
      COUNT(*)
    ----------
             0
    • 作为对比,我们可以看到recover后的scott.myobj2表行数。
    SQL> select count(*) from scott.myobj2;
    
      COUNT(*)
    ----------
      713748

    展开全文
  • 恢复删除的项目: 项目能恢复的前提是在Delete的时候没有勾选Delete project contents on disk(cannot be undone),如果勾选了,即在磁盘中删除了,这时候只能下载数据恢复软件找回了。如果没有勾选,那我们可以...

    恢复删除的项目:

    项目能恢复的前提是在Delete的时候没有勾选Delete project contents on disk(cannot be undone),如果勾选了,即在磁盘中删除了,这时候只能下载数据恢复软件找回了。如果没有勾选,那我们可以在我们存放项目的目录(Driectory)中可以找到我们删除的项目文件,之后通过导入项目,即可恢复。

    举例,我删除了我的项目中的Demo,仍在我的用于存放项目文件的目录下找到我的Demo。

     恢复删除的文件

    右击项目—>"Restore from Local History...”—>勾选所要恢复的文件—>点击“Restore”即可。

     恢复删除的代码:

    鼠标在代码区域右击—>"Team"—>"show Local History",在右下角机会看到History下的Revision Time,点击不同时间段,就会在代码区显示相应代码,之后粘贴复制就可以了。

     

    展开全文
  • GitHub恢复删除的远程仓库

    千次阅读 2020-04-08 20:17:20
    觉得没有什么实用价值了, 但是今天突然发现删除了一个比较有意义的仓库,今天需要去上面获得一些之前 编写 的代码,由于更换了电脑本地也没有了,这就尴尬了,所以想是不是可以恢复我们删除的仓库,github果然很...

    引言

    前两天在清理自己的github仓库时删除了很多之前创建的代码仓库,觉得没有什么实用价值了, 但是今天突然发现删除了一个比较有意义的仓库,今天需要去上面获得一些之前 编写 的代码,由于更换了电脑本地也没有了,这就尴尬了,所以想是不是可以恢复我们删除的仓库,github果然很人性化啊。

    恢复步骤

    1、算作setting

     

     

    2、选择Repositories

    3、选择Deleted repositories

     

     

    4、Happy 

    展开全文
  • VScode恢复删除的文件

    千次阅读 2020-04-15 14:11:00
    刚才一不小心删除了写了两天的组件,我承认,那一刻吓得腿酸了。。! 还好是使用鼠标右键删除的,这...然后在桌面的回收站找到了被删除的组件,恢复成功。 所以以后再在工作的目录里删除时还是右键保险点。。。! ...
  • Python恢复删除的文件

    千次阅读 2019-05-05 16:51:00
    1.在被删除文件的上一层文件夹上右键,选择Local History-->Show History 2.可以单个文件恢复,也可以直接恢复一个文件夹;选中需要恢复的文件(夹),点击左上角revert即可恢复 转载于:...
  • linux怎么恢复删除的文件

    千次阅读 2021-01-21 22:00:29
    作为一个多用户、多任务的操作系统,Linux下的文件一旦被删除,是难以恢复的。尽管删除命令只是在文件节点中作删除标记,并不真正清除文件内容,但是其他用户和一些有写盘动作的进程会很快覆盖这些数据。不过,对于...
  • 恢复删除的Exchange邮箱

    千次阅读 2017-09-01 13:51:20
    对于删除的邮箱Exchange会将该邮箱标识为断开的邮箱,对应的AD会存放在AD回收站中(前提是已启用AD回收站),所以对于恢复删除的邮箱直接从AD回收站中恢复对应的AD对象即可,但是需要具备以下前提条件:启用AD回收站...
  • /proc目录的作用,及利用/proc恢复删除的文件 介绍: 在Linux系统中,/proc目录是一个位于内存中的伪文件系统。该目录下保存的不是真正的文件和目录,而是一些“运行时”的信息,如CPU信息、负载信息、系统内存信息...
  • oracle恢复删除的数据

    千次阅读 2018-01-09 15:23:38
    一、通过scn恢复删除且已提交的数据  1、获得当前数据库的scn号  select current_scn from v$database; (切换到sys用户或system用户查询)   查询到的scn号为:1499223  2、查询当前scn号之前的scn ...
  • git 恢复删除的所有文件 (含中文)

    千次阅读 2016-09-24 18:49:44
    命令git ls-files -d | xargs echo -e | xargs git checkout -- 恢复删除的所有文件(文件目录中含有中文) 解析git ls-files -d 打印出被删除所有文件 (中文会被显示为转义字符) ,如最下面的代码段 xargs echo -e...
  • oracle恢复删除的表数据

    千次阅读 2018-10-09 16:00:25
    一、通过scn恢复删除且已提交的数据  1、获得当前数据库的scn号  select current_scn from v$database; (切换到sys用户或system用户查询)   查询到的scn号为:1499223  2、查询当前scn号之前的scn  ...
  • 而且微信除了支付之外,还要一个非常重要的功能,那就是聊天,在我们的微信里面有很多重要的我们想要留着纪念的微信聊天记录,如果我们不小心误删了,应该怎么恢复删除的微信聊天记录?手残党终于有救了。 方法一,...
  • oracle恢复删除的表或表记录的方法

    千次阅读 2010-11-08 19:26:00
    oracle恢复删除的表或表记录的方法文章分类:数据库一:表的恢复 对误删的表,只要没有使用PURGE永久删除选项,那么从flash back区恢复回来希望是挺大的。一般步骤有:1、从flash back里查询被删除的表 select * ...
  • github如何恢复删除的项目

    千次阅读 2020-06-09 10:55:35
    最近小G做一个很不爽的事情,本来想在github上新建一个项目,把之前旧的项目删除掉,真是太巧了,说出来我都感觉真是缘分,就是在删除的时候,电脑坏掉了,结果想上传的东西没有,旧的也让我删除,不过幸亏github...
  • 使用extundelete恢复删除的文件

    千次阅读 2017-02-09 18:44:00
    环境 LINUX Ubuntu14.04 下午因误操作删除了部署在tomcat 上的项目 ,所以需要使用extundelete来恢复 当前误删除了 /var/lib/tomcat7/webapps/ 所有项目 ...2.查看误删除的文件或者目录的上级目录的inod
  • git恢复删除的项目

    千次阅读 2016-03-27 19:13:35
    使用git sck –lost-found 命令找出刚才删除的分支里面的提交对象。 2.用git show命令查看一个找到的对象的内容,看是否为我们所找的。如 dangling commit 2e43cd56ee4fb08664cd843cd32836b54fbf594a 3.使用...
  • eclipse如何恢复删除的工程

    万次阅读 2018-02-26 09:57:01
    最近在eclipse中碰到了一个问题,就是删除了一个eclipse中的项目之后,我想找回来怎么办?(这里有个前提,我是点项目然后右键选择红色delete删除键的,当它弹出一个对话框要我同时删除工作空间的项目时,我并没有打...
  • git 恢复删除的文件

    千次阅读 2015-12-30 14:17:58
    转自:... 要查看删除的文件: git ls-files --deleted 恢复则需要从新checkout: git checkout 多个文件同时操作可以使用xargs git ls-files -d | xargs git checkout 分支名
  • 如何从Eclipse中恢复删除的cvs文件
  • Intellij IDEA如何恢复删除的文件或文件夹

    万次阅读 多人点赞 2018-12-28 11:30:32
    不小心删除了IDEA项目的文件或者文件夹 怎么恢复?下面介绍两种方法: 1. 方法1 例如将如图的文件删除,最简单最直接的方法就是CTRL+Z 如果ctrl+z不能返回 并且还有可能出现混乱 这个时候我们对这个文件夹点右键,...
  • GIT控制台恢复删除的文件

    千次阅读 2018-08-30 14:53:28
    例如在库的根目录中,先查看本地更改包含被误删的文件列表:git status 上图包含了build/build.js和...使用命令:git branch -a查看当前分支,如果不在需要恢复的分支上,需要切换到目标分支:git checkout...
  • 一招恢复删除的微信好友

    千次阅读 2018-06-23 12:01:28
    声明:欢迎批评指正Let's go!第一步:点击通讯录第二步:找到自己的头像点开第三步:点击个人相册第四步:点右上角两个小点的图标第五步:找到删除的好友的头像点...删除的好友需没把你删除 3.1和2需同时满足才可恢复好友...
  • Linux之恢复删除的数据

    千次阅读 2019-07-30 16:43:52
    参考: https://blog.csdn.net/zonghua521/article/details/78200239/ https://www.cnblogs.com/digdeep/p/4805677.html 待更新
  • eclipse恢复删除的文件

    2012-07-05 22:33:33
    在错删的包上右击,选restore from local history,就可以看到以前删除的文件了,勾选要恢复的文件,点击restore即可。 ——真是救我一命啊!!!感谢此功能!!!
  • 恢复删除Topic的过程

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 33,025
精华内容 13,210
关键字:

恢复删除的