tar - Remova os principais componentes de diretório na extração


104

Como você pode extrair apenas o dir de destino e não a árvore completa de dir?

comprimir

tar cf /var/www/site.tar /var/www_bak/site

extrair

tar xf /var/www/site.tar -C /tmp

Isso produzirá:

/tmp/var/www/site

Como é possível evitar que toda a árvore de diretórios seja criada quando o arquivo é extraído?

O que eu quero extrair para:

/tmp/site

Respostas:


34

Por que não usar a -Copção ao criar:

$ tar cf /var/www/site.tar -C /var/www_bak/ site

1
TMTOWTDI. Isso seria muito trabalho, usando a mesma -Copção;)
MikeyB

12
Ele quer retirar o caminho de alguns componentes principais, não alterar o diretório de saída. Veja abaixo a resposta correta.
Aymericbeaumet

4
Não podemos usá-lo quando outra pessoa prepara o arquivo.

Porque `` _t = prefixo - $ (data +% Y% m% d); tar -cjf ".backups / $ _t.tar.bz2" --transform = "s # ^ (\ ./)? # $ _ t / # x;" -- arquivos...; tar -df ".backups / $ _ t.tar.bz2" --strip-components = 1 `` `
AnrDaemon

258

Você deseja usar a --strip-components=NUMBERopção de tar:

 --strip-components=NUMBER
       strip NUMBER leading components from file names on extraction

Seu comando seria:

tar xfz /var/www/site.gz --strip-components=2 -C /tmp

19
Essa resposta é melhor porque você não precisa pensar nisso antes da criação do alcatrão. Você pode usá-lo com um arquivo tar já criado. Obrigado @MikeyB!
Fabien Quatravaux

4
Tenho o prazer de informar que isso funciona tanto no GNU tar quanto no BSD tar.
Nathan Osman

4
e porque você pode não ser o criador tar ... (ou se você está fazendo isso com outra ferramenta e que ferramenta faz coisas tolas ...)
xenoterracide

você ainda pode estar ausente do --strip-componentssinalizador se estiver usando a implementação incorporada do busybox tar.
Sylvainulg

1
@FabienQuatravaux Bem, sim --- se você cometeu um erro e criou um arquivo que inclui diretórios principais que você não deseja ver durante a extração. Mas é mais claro criar o arquivo morto sem os principais diretórios indesejáveis.
Calaf
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.