nux*_*nux 4 backup dd data-corruption
我有一个I / O错误每次我复制文件夹和文件从一个分区备份硬盘的时间。
那么我怎样才能安全地将这些数据备份到我的备份硬盘上呢?
首先,如果您的驱动器遇到 I/O 错误,您应该检查您的驱动器是否足够健康。I/O 错误可能仅定位在某个/某些特定的坏块/坏块上,但有一个/某些是驱动器故障通常开始的方式。
您可以使用它smartctl
来检查驱动器的S.M.A.R.T.
状态,它提供了有关驱动器整体状况的许多信息,最有趣的是有关重新分配/当前未决扇区数的信息。您可以smartctl
通过安装包来安装smartmontools
:
sudo apt-get update && sudo apt-get install smartmontools
Run Code Online (Sandbox Code Playgroud)
对于SATA
驱动器,您可以S.M.A.R.T.
通过运行以下命令来检查驱动器的状态:
sudo smartctl -a -d <device_file>
Run Code Online (Sandbox Code Playgroud)
*<device_file> = 您的驱动器映射到的设备文件(以 形式/dev/sdX
;您可以通过运行来检查lsblk
);
对于IDE
驱动器,您可以S.M.A.R.T.
通过运行以下命令来检查驱动器的状态:
sudo smartctl -a <device_file>
Run Code Online (Sandbox Code Playgroud)
*<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>
Run Code Online (Sandbox Code Playgroud)
*<用户名> = 您的用户名;<partition_mount_point> = 分区的挂载点(可以通过运行查看lsblk
);
将目标分区重新挂载为只读:
sudo mkdir /media/<username>/ddrescue && sudo mount -o ro /dev/<sdXY> /media/<username>/ddrescue
Run Code Online (Sandbox Code Playgroud)
*<用户名> = 您的用户名;<sdXY> = 分区映射到的块设备(您可以通过运行检查lsblk
);
创建一个目录来复制恢复的文件(在这种情况下,它是您的“ recovered
”文件夹home
):
mkdir ~/recovered
Run Code Online (Sandbox Code Playgroud)
运行ddrescue
:
ddrescue /media/<username>/ddrescue/<file_path> ~/recovered
Run Code Online (Sandbox Code Playgroud)
*<用户名> = 您的用户名;<file_path> = 目标分区中的文件路径;
并为您要恢复的每个文件重复最后一步。
完成后,卸载目标分区并删除临时文件夹:
sudo umount /media/<username>/ddrescue && sudo rmdir /media/<username>/ddrescue
Run Code Online (Sandbox Code Playgroud)
*<用户名> = 您的用户名;