我正在寻找一种将 ZIP 存档作为文件系统挂载的方法,以便我可以透明地访问存档中的文件。我只需要读取权限——ZIP 不会被修改。RAM 消耗很重要,因为这适用于(资源受限的)嵌入式系统。有哪些可用选项?
我刚刚使用这个命令制作了一个新安装的双启动(Ubuntu 和 Windows)的图像(我已经使用了一段时间来制作较小的图像):
dd if=/dev/sda | gzip > /mnt/drive.img.gz
Run Code Online (Sandbox Code Playgroud)
在这个驱动器上,使用了 500G 中少于 60G 的数据。不过那个图像文件现在是 409G 大。
那个怎么样?gzip 不应该设法压缩所有这些零吗?正如我所说,这是一个全新安装的系统。不能这么乱。
现在我没想到文件是 60G,但 400G 对我来说似乎非常大。
我看过许多与使用 dd、cat 和 clonezilla 来促进分区和设备克隆有关的问题、答案和指南。与其继续这些讨论,我希望dd在这篇文章中针对行为提出非常有针对性的问题。
我正在使用 Ubuntu 18.04 LTS live,从 USB 启动。我有一个带有 Windows7 (/dev/sda) 的 500gb 硬盘。我已经调整了分区的大小,使得未分配的空间略多于 420GB。我的目标是将引导表和分区备份到 120gb SSD (/dev/sdb)。SSD 没有分区并显示 110gb 未分配。
sudo dd if=/dev/sda of=/dev/sdb命中失败并传达“设备上没有剩余空间”。使用 gparted 抽查分区,我看到 /dev/sdb 包含相同的分区、标签、大小和未使用。唯一明显的区别是未分配的空间。
我能够从 SSD 启动 Windows,但还有一些与dd行为相关的问题。
dd尝试复制未分配的设备内容?dd有操作的顺序?(类似于分区 1->99,然后是其他驱动器块)就其价值而言,我确实计划在可预见的未来保留硬盘。
我喜欢使用 squashfs 进行压缩,因为将它们安装为循环设备来访问内部文件很简单。
我有很多 rar、tgz 和 zip 文件,我想将它们转换为 squashfs。
在这个答案中,我看到在将磁盘映像压缩到squashfs时可以使用伪文件以避免必须使用整个磁盘大小的临时文件。
mkdir empty-dir
mksquashfs empty-dir squash.img -p 'sda_backup.img f 444 root root dd if=/dev/sda bs=4M'
Run Code Online (Sandbox Code Playgroud)
我想使用伪文件以相同的方式(即时)从 rar、tgz 或 zip 转换为 squashfs,因此我不必首先将整个存档提取到磁盘,然后在单独的操作中压缩到 squashfs 。
其中一些档案包含数千个单独的文件,其中一些文件的文件名中包含空格或其他特殊字符。
我查看了README,我认为我需要使用该-pf <pseudo-file>选项,但我不确定如何动态创建伪文件(并且也不存在带空格的文件名问题)。我想我需要使用进程替换来从源存档创建文件列表。
理想情况下,我希望有一个命令能够转换任何 rar、tgz 或 zip,而不必为每个存档单独创建伪文件,但如果有人可以告诉我如何使用其中一种存档格式来完成此操作,那么希望我能为其他人解决这个问题。
感谢大家。
compression ×2
disk-image ×1
embedded ×1
filesystems ×1
linux ×1
rar ×1
squashfs ×1
tar ×1
ubuntu ×1
zip ×1