Crie um arquivo tar do diretório atual sem período anterior


10

Quando eu faço o seguinte:

tar czvf ../myarchive.tar.gz ./

Eu recebo uma única pasta raiz (irritante) no meu arquivo tar:

irritante

Como removo esse período terrível ao criar o arquivo?



3
Ou use --transform/ --xform, conforme sugerido por Magnus :tar -cf /path/to/output.tar -C /path/to/input-directory . --xform='s!^\./!!'
n.st 11/11/14

Respostas:


6

Você não

name=${PWD##*/}
cd ..
tar czf "$name.tar.gz" "$name"

(Nota: isso não funciona se o seu shell tiver o rastreamento de link simbólico do diretório atual ativado e o diretório atual for acessado por um link simbólico.)

Sim, não foi isso que você pediu, mas é o que você deve fazer. Os arquivos que expandem muitos arquivos no diretório atual são irritantes: coloca o ônus de criar um diretório de destino para o arquivo em cada pessoa que descompacta o arquivo e, se acidentalmente os descompactarem em um diretório não vazio, é difícil Limpar. Na maioria das vezes, um arquivo morto deve criar um único diretório de nível superior cujo nome é o nome base do arquivo morto.


Entendido. Se bem me lembro, é apenas muito chato ter que fazer um passo extra para arquivar um untar em um diretório específico (por exemplo tar xzvf archive.tar.gz && mv archive/* /outputvs. unzip archive.zip -d /output)
Naftuli Kay

9

O ponto aparece porque tarcria a estrutura do caminho da maneira que você fornece nos argumentos. Então, como você deu . como fonte, o arquivo morto também é criado na mesma estrutura.

Você pode tentar isso e verificar:

tar -czvf ../myarchive.tar.gz *

Atualizando a resposta com a ajuda do comentário de n.st

tar --xform s:'./':: -czvf ../myarchive.tar.gz ./

1
A *glob não corresponde aos arquivos ocultos.
n.st

: D eh .. apenas um iniciante .. não percebeu.
beginer

Você pode usar mais alguns globs do bash para incluir arquivos ocultos - dê uma olhada aqui .
n.st

0

é melhor adicionar ^ antes do anterior.

tar --xform s:'^./':: -czvf ../myarchive.tar.gz ./

OU, todos os "/" no nome do caminho completo dentro do arquivo serão removidos, a menos que "/" seja o fim do nome do caminho completo.


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.