$DIR
ファイルとフォルダを含むすべてのフォルダを検討してください。このフォルダをTARしたいが、その前に予備ステップでファイルの内容に現れる文字列をすべてのファイルで$DIR.tar
変更したいと思います。FOO
BAR
具体的には、変更はファイルに影響を与えてはいけません$DIR
。$DIR.tar
これはGNU /で可能ですかbash
?
$DIR
、it、itのコピーをそれぞれ作成してsed
これを行うことができますtar
。メモリ内ソリューションがあることを願っています。
答え1
もちろん、最も簡単な解決策は、ディレクトリをコピーしてから変更してtar
ingすることです。これを実行しているファイルシステムがBtrfs、CIFS、NFS 4.2、OCFS2、overlayfs、またはXFSの場合、次のようにディスク容量(変更されたブロックを除く)と時間の点でデフォルトで無料です。これらのreflink
サポートつまり、ファイルをコピーしても、実際にファイルの内容はコピーされません。元のデータ範囲のコピーは、内容が変更されたときにのみ作成されます。使用cp --reflink=always
。
GNUはtar
ファイル以外のものから入力を受け取ることができず、ファイルを指定するとアーカイブのパスを反映するため、そのファイルのパスが重要であるため、残念ながらそのファイルをまったく使用できません。別の方法でtar
。
メモリ内ソリューションがあることを願っています。
最も簡単な方法は、合理的に使用できるスクリプト言語を選択し、プログラムに頼るのではなく、直接アーカイブを構築することですtar
。たとえば、Pythonではtarfile
モジュール; Python初心者でも使いやすいです。この内容を含む多くの回答があり、一部あなたのソリューションに役立ちます。しかし、まだ確認していません。