作为一个例子,我试图从 ubuntu live iso 中提取所有文件除了路径/casper/filesystem.squashfs
。根据手册页:
Normally xorriso only writes to disk files which were given as stdio:
pseudo-drives or as log files. But its alter ego osirrox is able to
extract file objects from ISO images and to create, overwrite, or
delete file objects on disk.
Disk file exclusions by -not_mgt, -not_leaf, -not_paths apply.
我可以使用以下命令提取 iso 上的所有路径:
xorriso -osirrox on -indev ubuntu-21.04-desktop-amd64.iso -extract / extract_dir
但我一直尝试使用磁盘文件排除但无济于事。我在行动之前和之后尝试了不同的变化或not_leaf
不同的顺序。他们都提取所有路径。这是我尝试过的一些。not_paths
-extract
使用not_leaf
:
xorriso -osirrox on -indev ubuntu-21.04-desktop-amd64.iso -not_leaf 'filesystem.squashfs' -extract / extracted_dir
xorriso -osirrox on -indev ubuntu-21.04-desktop-amd64.iso -extract / extracted_dir -not_leaf 'filesystem.squashfs'
xorriso -osirrox on -indev ubuntu-21.04-desktop-amd64.iso -not_mgt on -not_leaf 'filesystem.squashfs' -extract / extracted_dir
xorriso -osirrox on -indev ubuntu-21.04-desktop-amd64.iso -not_mgt on -extract / extracted_dir -not_leaf 'filesystem.squashfs'
not_paths
与上面的重新排序一起使用:
xorriso -osirrox on -indev ubuntu-21.04-desktop-amd64.iso -not_mgt on -not_paths 'casper/filesystem.squashfs' -- -extract / extracted_dir
xorriso -osirrox on -indev ubuntu-21.04-desktop-amd64.iso -not_mgt on -not_paths '/casper/filesystem.squashfs' -- -extract / extracted_dir
xorriso -osirrox on -indev ubuntu-21.04-desktop-amd64.iso -not_mgt on -not_paths 'extracted_dir/casper/filesystem.squashfs' -- -extract / extracted_dir
not_leaf
我会接受带有或 的答案not_paths
,但更喜欢两者。解释一下这应该如何工作背后的逻辑(即为什么我没有得到它?)会很好。
答案1
-not_leaf
和的设置-no_path
是针对将树木插入 ISO 映像的情况。
对于 osirrox 情况,您必须(暂时)减少要从 ISO 中整体复制的树的内容。为此目的,-rm
请使用 xorriso 命令。-rm_r
请注意,两者都有可变长度的参数列表,需要以“ --
”结尾。在正常程序结束时,会出现阻力,因为更改尚未存储到 ISO。 (批处理会抛出 FAILURE,对话框不会让您退出。)通过最终命令避免这种情况-rollback_end
。
xorriso -osirrox on \
-indev ubuntu-21.04-desktop-amd64.iso \
-rm /casper/filesystem.squashfs -- \
-extract / extract_dir \
-rollback_end
另一个问题可能是 Ubuntu ISO 中的只读目录权限。它们妨碍提取后的操作。在 ISO 内部,这可以通过-find
如下命令来更改:
xorriso -osirrox on \
-indev ubuntu-21.04-desktop-amd64.iso \
-rm /casper/filesystem.squashfs -- \
-find / -type d -exec chmod u+w -- \
-extract / extract_dir \
-rollback_end
请记住,对 ISO 的所有更改都需要在-extract
命令之前完成。顺序很重要。