xorrisoを使用してisoを抽出するときに抽出されたパスを除外する方法

xorrisoを使用してisoを抽出するときに抽出されたパスを除外する方法

たとえば、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_pathISOイメージに木を挿入する場合のものです。

osirroxの場合、ISOから完全にコピーするには、ツリーの内容を(一時的に)減らす必要があります。これには-rmxorrisoコマンドを使用します。-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コマンドの前に完了する必要があることを覚えておいてください。順序が重要です。

おすすめ記事