一時的な場所にファイルを抽出せずにtarファイルのファイル名を変更する

一時的な場所にファイルを抽出せずにtarファイルのファイル名を変更する

というフォルダには、一部のファイルを含むtarファイルがありますold_name。ここで、ファイルをディスクに抽出せずにフォルダ名を変更した新しいtarファイルを作成したいと思います。new_nameこれにより、大規模アーカイブの場合はかなり遅くなります(ディスクの読み取りと書き込みの速度が2倍以上)。
私はこれを行う方法を知っています。tar -xf old.tar; tar -cf new.tar --transform 's/old_name/new_name/' old_name

いくつか試してみましたが、何も動作しないようです。

  • tar -cOf old.tar | tar -xf new.tar --transform 's/old_name/new_name/'
  • cat old.tar | tar --delete --transform 's/old_name/new_name/' > new.tar
  • cat old.tar | tar -u --transform 's/old_name/new_name/' > new.tar

しかし、何も動作しないようです。

閉じた後、次を発見しました。

しかし、これはパスを変更するのではなく、tarballからファイルを削除することです。

ベストアンサー1

tar は tar を生成または抽出できますが、この方法でストリームで動作することはできません。

同様のものが必要ですtar-stream。必要なことを行う例もあります。

https://github.com/mafintosh/tar-stream#modifying-existing-tarballs

おすすめ記事