「tar」を使用してフォルダをアーカイブする前に、フォルダ内のすべてのファイルを変更してください。

「tar」を使用してフォルダをアーカイブする前に、フォルダ内のすべてのファイルを変更してください。

$DIRファイルとフォルダを含むすべてのフォルダを検討してください。このフォルダをTARしたいが、その前に予備ステップでファイルの内容に現れる文字列をすべてのファイルで$DIR.tar変更したいと思います。FOOBAR

具体的には、変更はファイルに影響を与えてはいけません$DIR$DIR.tar

これはGNU /で可能ですかbash

$DIR、it、itのコピーをそれぞれ作成してsedこれを行うことができますtar。メモリ内ソリューションがあることを願っています。

答え1

もちろん、最も簡単な解決策は、ディレクトリをコピーしてから変更してtaringすることです。これを実行しているファイルシステムがBtrfs、CIFS、NFS 4.2、OCFS2、overlayfs、またはXFSの場合、次のようにディスク容量(変更されたブロックを除く)と時間の点でデフォルトで無料です。これらのreflinkサポートつまり、ファイルをコピーしても、実際にファイルの内容はコピーされません。元のデータ範囲のコピーは、内容が変更されたときにのみ作成されます。使用cp --reflink=always

GNUはtarファイル以外のものから入力を受け取ることができず、ファイルを指定するとアーカイブのパスを反映するため、そのファイルのパスが重要であるため、残念ながらそのファイルをまったく使用できません。別の方法でtar

メモリ内ソリューションがあることを願っています。

最も簡単な方法は、合理的に使用できるスクリプト言語を選択し、プログラムに頼るのではなく、直接アーカイブを構築することですtar。たとえば、Pythonではtarfileモジュール; Python初心者でも使いやすいです。この内容を含む多くの回答があり、一部あなたのソリューションに役立ちます。しかし、まだ確認していません。

関連情報