Tarでアーカイブしたいファイルのリストを含むファイルがあります。 mylist.txt
としましょう
を含む:
/path1/path2/file1.txt
/path1/path2/file3.txt
...
/path1/path2/file10.txt
私がしたいことは、このファイルをtarballにアーカイブすることですが、/path1/path2/
は除外します。現在これを行うことによって:
tar -cvf allfiles.tar -T mylist.txt
アーカイブ解除後にパスを保持します。
私はこれを試しましたが、うまくいきません:
tar -cvf -C /path1/path2 allfiles.tar -T mylist.txt
Mylist.txtにないファイルも含めて、/path1/path2
のすべてのファイルをアーカイブします
それを行う方法はありますか?
「抽出フェーズ」では、strip-components
フラグ
tar xvf tarname.tar --strip-components=n
これにより、ファイル名の最初のn個の先行コンポーネントが削除されます。ただし、異なるfile-path-componentsがある場合、これはすべての場合に機能するわけではありません。
アーカイブ中にそれをしたい場合は、1つだけ頭に浮かびます。
入力:ファイルのリスト+フルパス
1)各行について、ファイル名からパスを分割します
2)そのパスに対してcdを実行し、そのファイル名に対してtarを実行します
3)行ごとに繰り返す