我有六个 Linux 逻辑卷,它们一起支持一个虚拟机。VM 当前已关闭,因此很容易为它们拍摄一致的图像。
我想将所有六个图像打包到一个存档中。简单地说,我可以做这样的事情:
cp /dev/Zia/vm_lvraid_* /tmp/somedir
tar c /tmp/somedir | whatever
Run Code Online (Sandbox Code Playgroud)
但这当然会创建一个额外的副本。我想避免额外的副本。
显而易见的方法:
tar c /dev/Zia/vm_lvraid_* | whatever
Run Code Online (Sandbox Code Playgroud)
不起作用,因为 tar 将文件识别为特殊文件(在这种情况下为符号链接),并且基本上将其存储ln -s
在存档中。或者,使用--dereference
或 直接指向/dev/dm-X
,它会将它们识别为特殊(设备文件)并基本上存储mknod
在存档中。
我搜索了 tar 的命令行选项来覆盖此行为,但找不到任何选项。我也试过cpio
,同样的问题,也找不到任何覆盖它的选项。我也试过7z
(同上)。与pax
. 我什至尝试过zip
,这只是让自己感到困惑。
编辑:查看 GNU tar 和 GNU cpio 的源代码,它们似乎都无法做到这一点。至少,并非没有严重的技巧(无法禁用对设备文件的特殊处理)。因此,将不胜感激或替代实用程序的严重诡计的建议。
TLDR:是否有一些存档器可以将多个磁盘映像打包在一起(从原始设备获取)并流式传输输出,而无需制作额外的磁盘副本?我的偏好是以通用格式输出,例如 POSIX 或 GNU tar。