简而言之。我无法访问硬盘上的文件。我还假设这不是硬件问题(它更多地是“软件层面”的问题)。我想知道是否有方法(Linux 命令、Linux 工具)可以帮助监控硬盘并检测问题。以下是有关所发生情况的更详细描述。
我有一个 Verbatim 硬盘,里面有很多文件。今天我尝试在 Ubuntu 下使用它。在文件浏览器中,我看到了 Verbatim 文件夹并尝试打开它。结果我看到一个时钟,显示该过程正在运行并且需要更多时间。我等待了大约一分钟,看到了同样的画面(仍在运行,文件夹未打开),并尝试在终端中执行同样的操作。我曾经cd
进入 Verbatim 文件夹,然后在文件夹中执行ls -ltr
。结果我什么也没得到。我试图通过 取消命令Ctrl C
,但没有用,所以我只好关闭终端。然后在面板上我尝试eject
或unmount
设备(我不记得它叫什么了)并且 Ubuntu 告诉我设备正在忙于执行ls
(或类似的东西)命令。我还是断开了设备。
然后我尝试使用另一台运行 Windows 的计算机访问硬盘上的文件。Windows 识别了该设备,但告诉我检测到错误,建议进行扫描(但是,仍然有一个选项可以显示文件而不进行扫描)。我选择进行扫描。扫描花了太长时间却没有显示任何进度,所以我取消了扫描。
然后我断开设备并再次插入。仍然有扫描选项。扫描可以通过两个选项执行:(1)检测错误并自动更正;(2)检测丢失的文件并尝试恢复它们。默认情况下会选中第一个选项(我以这种方式运行的上一次(已取消)扫描)。这次我还选中了第二个选项(因此两个选项都已选中)并再次开始扫描。再次扫描太慢,没有显示任何进度,所以我再次取消了扫描。
然后我开始扫描,选中第一个选项(自动查找错误并更正),并给它足够的时间。大约 20-30 分钟后,它就准备好了。结果我收到一条消息,说某些文件夹无法访问,已被永久删除。之后,我能够使用该设备(进入文件夹和子文件夹并查看文件)。
然后我再次尝试在 Ubuntu 下使用该设备。Ubuntu 花了大约一分钟的时间才识别该设备(时间太长了)。然后我遇到了同样的问题(我看不到硬盘上的文件夹)。这意味着我看到了硬盘文件夹,我可以进入该文件夹,但我无法看到那里有什么文件。
然后我将设备连接到 Windows 计算机,但无法识别该设备(根本看不到它)。我猜想我在 Ubuntu 上执行了卸载(或类似操作),并且阻止了硬盘驱动器(因此 Windows 计算机看不到它)。但是,我不确定这个假设。可能是设备不知何故损坏了。
有人可以帮我吗?因为该设备上有我过去 7 年的所有家庭照片。
答案1
首先,您应该确定该驱动器上使用的文件系统类型。最有可能的是 FAT32。您可以使用 fdisk 命令执行此操作:
fdisk -l
这将返回一个设备列表,每行都会有一个“类型”,显示文件系统:
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 219353087 219351040 104.6G 83 Linux
/dev/sda2 219355134 234440703 15085570 7.2G 5 Extended
/dev/sda5 219355136 234440703 15085568 7.2G 82 Linux swap / Solaris
如果您有另一个可用驱动器,其大小等于或大于故障驱动器,那么根据我的经验,尝试恢复的最简单方法是使用名为 dd-rescue 的工具。更多信息可在此处找到:dd-救援
您还可以手动使用 dd 将整个驱动器的映像制作成文件。如果硬盘很大,这可能需要很长时间。您还需要确保在计划创建备份映像的任何磁盘上都有足够的磁盘空间,并确保正在使用的文件系统支持足够大的文件以包含整个驱动器的大小。
以下是如何手动完成此操作的示例:
dd bs=4k if=/dev/sda of=/path/to/backup.img conv=noerror,sync
在上面的命令中,/dev/sda 是损坏的磁盘,backup.img 是将包含整个磁盘内容作为备份的文件。有关此命令的更多信息,请参见此处:
最好使用较小的块大小参数,以便在遇到错误时丢失更少的数据。例如“bs = 1024”,但这会导致操作花费更长时间。
除非您的硬盘启用了 SMART 等功能,否则很难确定硬盘是否真的出现故障。您的磁盘可能没有出现故障,问题可能是由于文件系统损坏造成的。
不幸的是,除了通常由 BIOS 控制的 SMART 等功能之外,我不知道还有什么好方法可以切实确定硬盘的损坏程度。
一旦确定了您在该磁盘上使用的文件系统类型,您就可以尝试在 Linux 中使用 fsck 命令修复文件系统,就像之前在 Windows 上所做的那样:(确保您使用的 fsck 与您的特定文件系统类型相匹配。
fsck.vfat /dev/sdb1
需要注意的是,Linux 并不总是擅长修复 ntfs 或 fat 分区,因此在验证备份之前不应尝试此操作。事实上,我建议您在备份映像上执行尝试修复。有关在备份文件上执行 fsck 的说明可在此处找到:安装使用 dd 创建的原始分区文件
根据文件系统的安装方式,如果 ls 命令正在更改文件或目录元数据,则确实可能会损坏文件系统;特别是通过更新访问时间。在驱动器正在写入任何内容时拔下驱动器会导致文件系统出现错误,尤其是在没有良好日志记录功能的文件系统(例如 FAT32)中,这些错误通常可以使用 fsck 进行纠正。
我很抱歉您处于如此危险的境地,我希望您能够恢复这些文件。
答案2
返回您的 Linux 系统。
打开根终端,然后输入tail -f /var/log/kern.log
,最大化此窗口。
连接您的硬盘。
如果驱动器存在硬件问题,则会显示在此处。如果 USB 连接存在问题,则会显示“无法枚举设备”或类似信息。如果驱动器存在介质问题,则会显示有关坏块的信息。
如果出现 USB 连接错误,则硬盘驱动器外壳中的 USB 电缆、连接器或 USB 转 SATA 适配器可能有问题(针脚断裂、连接器从板上脱落等)
假设您的外置硬盘型号的 USB 板上没有加密功能,您可以将硬盘从外壳中取出,直接将其连接到 PC,然后像任何内置硬盘一样使用它。如果它确实有加密功能 - 您确实需要让该电路板工作,并且应该尝试找一个擅长电子/焊接的人来更换 USB 连接器或将电缆直接焊接到电路板上的焊盘上(希望没有被扯掉)。硬盘仍可在另一个系统上运行,但您将无法获取数据。
外壳内部的 USB 板示例:
消除任何硬件问题后,您可以尝试运行 Testdisk 以查看它可以恢复什么。您可以在apt-get
Ubuntu 下的 root 终端上安装它,也可以下载并运行Windows 版本. 准备好另一个驱动器来复制文件,并且下次备份您的数据。
祝你好运。
答案3
修复故障硬盘时,文件丢失的风险是无法避免的。根据硬盘上数据的价值,专业的数据恢复服务可能是您的最佳选择。我认为这些服务的起价约为 500 美元,有时会大幅上涨,具体取决于恢复数据所需的努力程度。即使最好的数据恢复服务也可能无法恢复您的所有数据,但与您自己的任何做法相比,它们的成功率要高得多。
我建议你探索Seagate 恢复服务了解更多信息。
我肯定这不是你想听到的,但专业的数据恢复可以打开硬盘并执行其他程序,而这些程序你自己根本无法做到。数据恢复需要专业知识、专门的软件和工具、硬盘部件,并且必须在干净的房间内进行。在家里是不可能做到的。
答案4
您是否尝试过手动使用 Windows 进行完整磁盘检查?
如果您打开 cmd 并输入 chkdsk /?,它会显示所有可能的选项。
对于 NTFS 分区,您可以执行 chkdsk /F /R /B /X,它可以进行最完整的检查。对于 FAT32,请省略 /B。
请注意,这需要很长时间,具体取决于您的硬盘。但这可能是挽救一些数据的可能性。