ファイルリストからtarアーカイブを作成し、フルパスを削除する

ファイルリストからtarアーカイブを作成し、フルパスを削除する

tar アーカイブを作成するために 2 つのオプションを組み合わせようとしていますが、うまく機能しません。何が問題なのかわかりません。

私が使う:

tar -C /var/www/website html -cvzf html.tgz -T /tmp/htmllist.txt

-C オプションのみを使用すると、相対パス "./html/" のみを含む tar アーカイブが作成されますが、そのフォルダー内のすべてのファイルが含まれます。これは望ましくありません。

次に、-T オプションのみを使用すると、必要なファイルのみを含む tar アーカイブが作成されますが、パスは絶対パス「/var/www/website/html/whatever.html」になります。これも望ましくありません。

2つを組み合わせたいのですが、どうもうまくいきません。

フォルダ構造は次のとおりです。

/var/www/website/html/
  • 多数の.htmlファイル

/tmp/htmllist.txt フォルダには次のような行が含まれています。

  • /var/www/ウェブサイト/html/file1.html
  • /var/www/ウェブサイト/html/file5.html
  • このサイトは

等々。

この問題をどうやって解決すればいいでしょうか?

答え1

Tar は を使用する場合は逆の動作をします-T。完全なパスを含むファイルをアーカイブします。パスが必要ない場合は、抽出時にパスを削除します。たとえば、

tarballを作成する

tar -C /var/www/website html -cvzf html.tgz -T /tmp/htmllist.txt

tarballを解凍

tar -xvf html.tgz --strip-path=3

これにより、出力パス (つまり、/var/www/website) から 3 つのコンポーネントが削除されます。

関連情報