从坏扇区的NTFS驱动器恢复文件

几天前,我在外部500 GB NTFS USB硬盘上创建了数据备份。 我已经格式化了我的电脑,重新安装了Ubuntu并开始从外部硬盘传回数据。

不幸的是,一些文件已损坏,Ubuntu无法复制它们。 如果我使用Windows 7登录,则会出现同样的问题。

磁盘工具检测到SMART存在“一些坏扇区”。

有些文件完好无损,但是其他文件无法访问(也无法读取,复制……),尽管它们显示在nautilus中并显示正确的文件大小。

我有什么办法可以恢复这些数据吗? 我曾想过使用TestDisk,但这个实用程序似乎对修复丢失的分区或删除的文件更有用。

我还想过使用ddrescue所以我至少可以拥有磁盘的低级副本,但我不确定是什么用来制作它以恢复数据!

如果驱动器具有不可读的扇区,则其中一个选择是使用dd制作它的图像,强制它忽略损坏的扇区,然后安装该图像以读取有用的数据。

创建驱动器的映像

使用命令sudo fdisk -l来识别你的USB磁盘,注意他的设备路径,它应该看起来像/dev/sd[*] ,其中[*]是代表你的USB驱动器的字母。

当您确定要复制的驱动器的路径时,您可以使用dd制作它的图像并使用选项在无法读取数据后继续读取

 dd if=/dev/hd[*] of=/foo_path/foo_image conv=noerror,sync 

这将读取设备/dev/sd[*] ,将其输出到/foo_path/foo_image并忽略读取错误。 /foo_path/foo_image不应该在您正在阅读的同一磁盘上。

所以,假设您使用了sudo fdisk -l并且您发现您的USB驱动器是/dev/sdb ,您可以使用这些命令中的任何一个来创建映像,只需将/dev/hd[*]替换为/dev/sdb

Mouting图像文件以读取数据

你需要创建一个挂载点,让我们调用它/mnt/ddimage

 sudo mkdir /mnt/ddimage 

现在将刚创建的图像挂载到它

 mount /foo_path/foo_image /mnt/ddimage -o loop 

您现在应该能够从克隆的驱动器映像中读取任何有用的数据。

问题解决了! 我知道这与Ubuntu无关,但我认为这对其他人有用。

我发现Window的chkdsk可以解决问题,这是因为Ubuntu不像Windows那样支持NTFS。 运行任务需要花费几个小时/天(只有Windows scandisk激活了所有选项),但最终我设法恢复了99.98%的数据。

相反,使用dd你应该使用一个更好地处理错误的工具,而不是用零填充它们。 我遇到了很多超时,这使得这个过程非常冗长乏味。 替代方案是ddrescue ,重试失败的扇区,并且从我的经验中跳过坏扇区也快一点。

安装(ubuntu)

 sudo apt-get install gddrescue 

创建图像

  sudo ddrescue -d -r3 /dev/sda1 test.img test.logfile 

这将在磁盘/dev/sda1名为test.img的当前目录中创建一个映像。 您当然可以备份整个驱动器而不是单个分区。 (r参数告诉它重试失败的扇区三次 – 不要忘记日志文件,否则这将无法工作)ddrescue还允许你中止/恢复这个过程非常好。 请记住设置正确的块大小:-b“blocksize”如果在-d“直接模式”上出现错误

挂载图像文件

创建要安装映像的文件夹并装入映像

 sudo mkdir /mnt/mybackup mount test.img /mnt/mybackup -o loop 

有关详细信息,请查看以下内容: https: //www.gnu.org/software/ddrescue/manual/ddrescue_manual.html https://www.technibble.com/guide-using-ddrescue-recover-data/ https:/ /apple.stackexchange.com/questions/39504/best-way-to-copy-all-files-ignoring-errors