我有一个I/O 错误每次我将文件夹和文件从分区复制到备份硬盘时。
那么我如何才能安全地将这些数据备份到我的备份硬盘上呢?
答案1
首先,如果您的驱动器出现 I/O 错误,您应该检查驱动器是否足够健康。I/O 错误可能仅局限于某个特定的坏块,但出现某个坏块通常是驱动器故障的开始。
您可以使用smartctl
它来检查驱动器的S.M.A.R.T.
状态,它提供了有关驱动器整体状况的许多信息,最有趣的是有关重新分配/当前待处理的扇区数的信息。您可以smartctl
通过安装软件包来安装smartmontools
:
sudo apt-get update && sudo apt-get install smartmontools
对于SATA
驱动器,您可以通过运行以下命令检查驱动器的S.M.A.R.T.
状态:
sudo smartctl -a -d <device_file>
*<device_file> = 您的驱动器映射到的设备文件(以 的形式/dev/sdX
;您可以通过运行 来检查lsblk
);
对于IDE
驱动器,您可以通过运行以下命令检查驱动器的S.M.A.R.T.
状态:
sudo smartctl -a <device_file>
*<device_file> = 您的驱动器映射到的设备文件(以 的形式/dev/sdX
;您可以通过运行 来检查lsblk
);
要检查的最重要的指标是Reallocated sector count
和Current pending sector count
。前者提供驱动器的“死”扇区的数量,而后者提供驱动器的“几乎死”扇区的数量,如果进一步读取这些扇区失败,这些扇区将被重新分配。
如果磁盘有点老旧,这些数字不太可能为 0,这是理想情况。这些数字实际上有多令人担忧取决于驱动器的年龄和大小;考虑到大多数硬盘驱动器上的每个“死”扇区都等于已经512 B
丢失的存储空间,但最重要的是,已经很高的数字通常会更快地增加,这通常是接近故障的指标。
除此之外,您还可以尝试使用ddrescue
。如果包含您要恢复的文件的分区是分区root
,请从 Live DVD 执行此操作,因为目标文件系统必须以只读方式安装。
还要注意,读取/写入不健康的驱动器可能会进一步损坏它。 ddrescue
目的是尽可能减少损害,但没有保证。
首先,如果目标分区已挂载,请将其卸载:
sudo umount /media/<username>/<partition_mount_point>
*<username> = 您的用户名;<partition_mount_point> = 分区的挂载点(您可以通过运行来检查lsblk
);
将目标分区重新挂载为只读:
sudo mkdir /media/<username>/ddrescue && sudo mount -o ro /dev/<sdXY> /media/<username>/ddrescue
*<username> = 您的用户名;<sdXY> = 分区映射到的块设备(您可以通过运行来检查lsblk
);
创建一个目录来复制恢复的文件(在本例中它是recovered
您的 中的“ ”文件夹home
):
mkdir ~/recovered
跑步ddrescue
:
ddrescue /media/<username>/ddrescue/<file_path> ~/recovered
*<username> = 您的用户名;<file_path> = 目标分区中的文件路径;
对每个想要恢复的文件重复这最后一步。
完成后,卸载目标分区并删除临时文件夹:
sudo umount /media/<username>/ddrescue && sudo rmdir /media/<username>/ddrescue
*<用户名> = 您的用户名;