使用 dd 将磁盘备份到同一磁盘

使用 dd 将磁盘备份到同一磁盘

我曾尝试使用dd它来备份我的电脑硬盘,但结果却令人困惑。我在多个来源上都看到过这种情况(例如:http://www.backuphowto.info/linux-backup-hard-disk-clone-ddhttp://debianhelp.co.uk/ddcommand.htm)它们包括类似这样的内容:

dd if=/dev/sda of=~/backup.img

1)除非我很困惑,否则这会尝试将整个磁盘备份到磁盘上的文件中,不是吗?

我曾尝试使用此方法,但首先压缩了输出以节省空间。为了防止压缩文件因尝试复制所有可用数据而占用大量空间,我曾经将zerofree0 写入磁盘所有未使用的空间。我的磁盘总容量约为 320GB,其中约 100GB 已使用,剩下约 220GB 可用。

当我尝试使用以下命令时:

dd if=/dev/sda | gzip -c > ~/image.img.gz

在我退出备份之前,备份文件的大小达到了~160GB(目的是弄清楚如何备份到外部磁盘,我已经成功完成了这项任务)。

2) 为什么备份会占用这么多空间?是因为dd看到了正在写入的文件,然后尝试备份该文件吗?还是可能是我没有zerofree正确使用,所以尽管我努力防止这种情况发生,但还是备份了一堆随机的垃圾数据?

答案1

当硬盘正在被修改时,您无法准确地复制它。

除非我很困惑,否则这会尝试将整个磁盘备份到磁盘上的文件中,不是吗?

是的,它会尝试。该dd命令将读取一个块(从驱动器),压缩该块,写入该块(到该驱动器上的文件),然后继续下一个块。映像将具有backup.img指向该文件的部分写入和部分写入的文件系统指针。

dd注意:我大大简化了和之间的管道缓冲,gzip因为细节与这里无关。

为什么备份会占用这么多空间?

可能的原因是它正在尝试复制部分写入的backup.img文件。其他因素需要对所用文件系统的文件系统结构有深入的了解。

相关内容