Criando um arquivo tar a partir de uma lista de arquivos E removendo o caminho completo

Criando um arquivo tar a partir de uma lista de arquivos E removendo o caminho completo

Estou tentando combinar duas opções para criar um arquivo tar, mas elas não funcionam bem juntas. Eu não sei qual é o problema.

Eu uso:

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

Se eu usar apenas a opção -C, ele criará um arquivo tar com apenas um caminho relativo "./html/", mas TODOS os arquivos dentro dessa pasta. Eu não quero isso.

Então, se eu usar apenas a opção -T, ele cria um arquivo tar com apenas os arquivos necessários, mas o caminho é absoluto "/var/www/website/html/whatever.html". Eu também não quero isso.

Quero uma combinação dos dois, mas de alguma forma não funciona.

A estrutura da pasta é:

/var/www/website/html/
  • Muitos arquivos .html

A pasta /tmp/htmllist.txt contém linhas como:

  • /var/www/website/html/file1.html
  • /var/www/website/html/file5.html
  • /var/www/website/html/file32.html

E assim por diante.

Como eu resolvo este problema?

Responder1

Tar funciona ao contrário ao usar -T. Ele arquiva os arquivos incluindo o caminho completo. Se você não quiser o caminho, retire-o ao extrair, por exemplo,

Criar tarball

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

Extrair tarball

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

Isso remove três componentes do caminho de saída, ou seja, /var/www/website.

informação relacionada