我需要压缩 SSD 驱动器的一个分区,该分区位于可用空间小于该分区的机器上。我搜索、找到并执行了以下命令:
root@host1:~/# dd if=/dev/sdd1 | gzip -c > /tmp/ubuntu.image
226510848+0 records in
226510848+0 records out
115973554176 bytes (116 GB, 108 GiB) copied, 3716.19 s, 31.2 MB/s
现在,在另一台机器上我无法提取该文件。尝试使用上下文菜单“在此处提取”,我得到:
无法打开“ubuntu.image”
存档类型不受支持。
当我尝试以下命令时,光标消失 1-2 秒,但随后我得到提示,但文件未被提取或显示任何错误:
me@host2:/media/me/ntfs$ tar -xvzf ubuntu.image
me@host2:/media/me/ntfs$
file
命令打印如下:
me@host2:/media/me/ntfs$ file ubuntu.image
ubuntu.image: gzip compressed data, last modified: Fri Oct 27 13:02:10 2017, from Unix
那么问题出在哪里?我该如何在 host2 上安装此映像?
Host1 和 Host2 都是 Ubuntu 16.04
答案1
Tar 用于提取 tar 球 :)
这是经过 gzip 压缩的图像,但没有常见的 .gz 后缀(通常用于 gzip 压缩文件)。这没什么大不了的;数据就在那里。
如果你尝试gunzip
直接使用,它会报错,因为它不使用默认后缀。有很多方法可以解决这个问题:
- 将文件重命名为 ubuntu.image.gz(
mv ubuntu.image ubuntu.image.gz
) 并使用 解压缩gunzip ubuntu.image.gz
。 - 使用
zcat ubuntu.image > ubuntu_uncompress.image
- 使用
gunzip -S .image ubuntu.image
。这将产生一个名为 ubuntu 的未压缩文件。
我坚持重命名文件。另请注意,解压后的文件将与分区原来的大小相同。
获得解压后的图像后,你可以使用以下方式挂载它:sudo mount -o loop ubuntu.image /mnt/