dd 图像大小 - 它是否等于分区的大小?

and*_*sen 7 dd

我正在使用dd在 Ubuntu 14.04 上创建引导分区的映像。这是我第一次这样做。

在检查磁盘上的使用情况时,我使用了df -h. 你会看到我的/dev/sda1分区大小是5.8G...

bash$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       220G  5.8G  203G   3% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev            3.9G  4.0K  3.9G   1% /dev
tmpfs           797M  976K  796M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            3.9G   30M  3.9G   1% /run/shm
none            100M   28K  100M   1% /run/user
/dev/sda5       239G   32K  239G   1% /windows
Run Code Online (Sandbox Code Playgroud)

我尝试在图像中创建并/tmp使用以下命令将其保存:

bash$ sudo dd if=/dev/sda1 of=/tmp/ubuntu.image
Run Code Online (Sandbox Code Playgroud)

它开始在我的/tmp目录中创建一个映像,但是当我检查它的进度时,在我取消它之前,该映像一直增长到远远超过 30G。

这在我的脑海中引发了几个问题:

  • 为什么磁盘映像会这么大?
  • 它会等于分区的大小吗?
  • 有没有办法将磁盘映像保持在实际使用空间的大小?
  • 有没有更好的工具可以使用?

mur*_*uru 7

/dev/sda1       220G  5.8G  203G   3% /
Run Code Online (Sandbox Code Playgroud)

/dev/sda1大小为 220 GB,已使用 5.8 GB。所以:

  1. dd 进行逐字节复制,因此分区的总大小很重要,而不是分区中的内容。
  2. 是的。它将增长到 220 GB。
  3. 您可以使用gzip或压缩生成的图像xz

    sudo dd if=/dev/sda1 | xz > /tmp/ubuntu.image
    
    Run Code Online (Sandbox Code Playgroud)
  4. 取决于你所说的更好的工具。对于某些任务,需要逐字节复制(例如,从故障磁盘恢复数据)。在这种情况下,dd+ 压缩是最简单的方法。如果没有,请考虑类似partimage.