V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
colorwin
V2EX  ›  Linux

又作大死了,求助重新恢复硬盘

  •  
  •   colorwin · 2017-05-22 00:29:25 +08:00 · 5059 次点击
    这是一个创建于 2748 天前的主题,其中的信息可能已经有所发展或是发生改变。

    OS: Ubuntu 16.04

    我打算备份系统到我的硬盘里,也是第一次。 然后选择了 dd, 然后看到一条命令:

    $ sudo  dd if=/dev/sda of=/dev/sdb
    

    sdb 就是我的硬盘啊,然后我作死地想,如果我直接 dd 到 /dev/sdb 会怎么样呢。 然后我就直接试了。。。。

    我有点担心,就 ls 了一下当前目录也就是我的硬盘的根目录,悲催的事情发生了,空了!!!! 赶紧 cancel 掉。然后发现硬盘没有被挂载了。。。。

    重启一下看有没有奇迹,什么也没发生。

    $ sudo fdisk -l
    
    Disk /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    Disklabel type: dos
    Disk identifier: 0x0004cba2
    
    Device     Boot     Start       End   Sectors   Size Id Type
    /dev/sda1  *         4096 104857599 104853504    50G  7 HPFS/NTFS/exFAT
    /dev/sda2       104861694 976771071 871909378 415.8G  f W95 Ext'd (LBA)
    /dev/sda5       104861696 396363775 291502080   139G  7 HPFS/NTFS/exFAT
    /dev/sda6       687867904 699584511  11716608   5.6G 82 Linux swap / Solari
    /dev/sda7       699586560 700364799    778240   380M 83 Linux
    /dev/sda8       700366848 798021144  97654297  46.6G 83 Linux
    /dev/sda9       798023680 976771071 178747392  85.2G 83 Linux
    
    Partition 2 does not start on physical sector boundary.
    
    
    
    
    Ignoring extra data in partition table 5.
    Ignoring extra data in partition table 5.
    Ignoring extra data in partition table 5.
    Invalid flag 0x0eeb of EBR (for partition 5) will be corrected by w(rite).
    Disk /dev/sdb: 1.4 TiB, 1500267937792 bytes, 2930210816 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: dos
    Disk identifier: 0x0004cba2
    
    Device     Boot     Start        End    Sectors   Size Id Type
    /dev/sdb1  *         4096  104857599  104853504    50G  7 HPFS/NTFS/exFAT
    /dev/sdb2       104861694  976771071  871909378 415.8G  f W95 Ext'd (LBA)
    /dev/sdb5       770403513 3291724251 2521320739   1.2T f4 SpeedStor
    

    貌似我的数据还在。

    然后试着手动挂载 sdb, sdb1, sdb2, sdb5。报错

    $ sudo mount /dev/sdb test
    
    mount: wrong fs type, bad option, bad superblock on /dev/sdb1,
           missing codepage or helper program, or other error
    
           In some cases useful info is found in syslog - try
           dmesg | tail or so.
    

    在装了” nfs-common “之后 sdb 挂载成功了,然而里面是空的。

    求助怎么处理?

    25 条回复    2017-06-03 09:02:41 +08:00
    wxg4net
        1
    wxg4net  
       2017-05-22 07:00:34 +08:00   ❤️ 2
    根据我的经验,如无很重要的数据丢失,还是重新来过吧。折腾数据恢复是个概率活,细心活。想开点,一切都会过去的
    kokutou
        2
    kokutou  
       2017-05-22 07:55:45 +08:00 via Android
    那么问题来了,你 dd 的时候,dd 了多少 g ?
    gamexg
        3
    gamexg  
       2017-05-22 08:12:35 +08:00
    看操作是覆盖了 sdb 前面的数据,包括分区表。
    windows 下用 DiskGenius 搜索分区可以找回未覆盖的分区。linux 下就不清楚什么软件可以搞了。
    bukip
        4
    bukip  
       2017-05-22 08:18:19 +08:00
    dd 应该是直接覆盖了
    Lycnir
        5
    Lycnir  
       2017-05-22 08:58:20 +08:00
    很明显,sdb 的分区表已经不是你原来的分区表了 如果在你 dd 时间很短的时候取消,恢复原来之前的分区表还是可以简单的救回大部分数据的
    Charkey
        6
    Charkey  
       2017-05-22 09:32:42 +08:00
    windows 我有 diskgenius,linus 没玩过。
    nanpuyue
        7
    nanpuyue  
       2017-05-22 09:58:08 +08:00
    建议在 windows 下用 diskhenius 恢复,linux 下的恢复工具对使用者的经验要求比较高一点。
    mhycy
        8
    mhycy  
       2017-05-22 10:08:27 +08:00
    diskgenius 在这种情况不是最好选择
    记忆中有一个软件可以打捞分区表丢失的数据
    不知道 Linux 文件系统可用不可用

    我只捞过 NTFS 文件系统的数据。。。
    mhycy
        9
    mhycy  
       2017-05-22 10:12:43 +08:00
    找到了,R-Studio
    QQ2171775959
        10
    QQ2171775959  
       2017-05-22 11:05:36 +08:00
    老兄也是人才一位啊,备份数据也这么不小心,是不会弄还是失误啊,不会的话,就拿点不重要的数据练练手,要不然把重要的数据丢失了,小心领导找你谈话。
    15015613
        11
    15015613  
       2017-05-22 11:22:33 +08:00 via Android
    @colorwin
    sdb 是 MBR 还是 GPT。
    如果是 GPT 的话,分区表可以根据尾部的备份恢复回来。
    colorwin
        12
    colorwin  
    OP
       2017-05-22 13:44:40 +08:00
    @wxg4net
    @gamexg
    @kokutou
    @bukip
    @Lycnir
    @Charkey
    @mhycy
    @QQ2171775959
    @15015613

    谢谢各位,

    我重启去 window 系统里(装的双系统),用了 window 系统的恢复软件 diskgenius (之前也搞坏过硬盘了。。。)扫描了看了一下,硬盘里没什么重要的东西,不打算要了,还是格式了重新来算了。

    这个移动硬盘闲置很久了,我刚开始是想拿来备份系统。后来看到这行`$ sudo dd if=/dev/sda of=/dev/sdb`命令,想如果可以复制挂载点,那么可以全部系统直接 copy 到硬盘的话,可以直接把移动硬盘当移动系统了。

    这个应该可以实现的吧,要怎么做呢?
    itfanr
        14
    itfanr  
       2017-05-22 16:12:56 +08:00 via Android
    dd 不要随便用
    darkshell
        15
    darkshell  
       2017-05-22 16:30:52 +08:00
    testdisk 可以试试
    wxg4net
        16
    wxg4net  
       2017-05-22 20:22:04 +08:00
    其实 archlinux 是可以通过 rsync 备份、恢复系统的。我也这么做过,但这不包含引导部分。ubuntu 不确定是否可以。或许可以,也可能不可以。我发现 btrfs 太爽,不同子卷可以安装不同系统,数据按照子卷放...备份超级方便
    ToughGuy
        17
    ToughGuy  
       2017-05-22 20:27:10 +08:00
    1. 先尝试恢复分区表
    2. 尝试从恢复后的分区里面恢复文件系统(数据)

    Diskgenius 可以恢复分区表(你要记得你之前分区的大概位置, 他会注意搜索边界), 这真的是很 diao 的国产软件。

    然后使用类似 e2fsck 之类的来修复文件系统。

    记得我以前有在 V2 上面回答过类似问题。
    ToughGuy
        18
    ToughGuy  
       2017-05-22 20:30:20 +08:00
    找到原来的主题了, 你的难兄难弟在这里。

    /t/269369
    standin000
        19
    standin000  
       2017-05-22 20:40:53 +08:00
    @wxg4net 按子卷放跟按分区放有什么优势?
    wxg4net
        20
    wxg4net  
       2017-05-22 21:21:57 +08:00
    @standin000 请搜索 btrfs,查阅相关知识
    okudayukiko0
        21
    okudayukiko0  
       2017-05-25 14:18:05 +08:00 via iPhone   ❤️ 1
    dd 估计是直接写 LBA 而不是删除文件,被 dd 覆盖的数据估计不能找回,dd 貌似可用来销毁数据。Disk Genius 主要针对 NTFS 等分区,用 DiskGenius 转换 Linux+Windows 的 MBR 到 GPT 结果失败。数据的恢复可以用 EasyRecovery,重要数据请找数据恢复
    colorwin
        22
    colorwin  
    OP
       2017-05-26 13:03:36 +08:00
    @okudayukiko0 我现在已经格式化了这个硬盘,但是 MBR 损坏了,读不出来硬盘。我尝试在里面安装了一个 ubuntu 系统是可以被引导进入的。现在我只想恢复默认的 MBR,要怎么做呢?
    okudayukiko0
        23
    okudayukiko0  
       2017-05-26 17:06:32 +08:00 via iPhone
    MBR 只用于开机,你说的是分区表吧,NTFS 可以用 DiskGenius 恢复分区表。要 Rebuild 分区表,一是重新分区,二是用 Disk Genius 等找回
    liuyanjun0826
        24
    liuyanjun0826  
       2017-05-28 19:11:52 +08:00
    dd 後並不會實時更新文件列表,所以你不應該 CTRL+C,而且 Linux 也不會實時更新掛載硬盤,你重啓一下就能看到硬盤了。數據丟了就在也找不會來了
    redapple0204
        25
    redapple0204  
       2017-06-03 09:02:41 +08:00
    我当时就被坑了,还以为 dd 会生成一个备份文件到硬盘里,结果是整个硬盘被清除了....
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1027 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 20:37 · PVG 04:37 · LAX 12:37 · JFK 15:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.