Não crie o arquivo tar no diretório que você está empacotando:
tar -czf /tmp/workspace.tar.gz .
faz o truque, exceto que irá extrair os arquivos de todo o diretório atual quando você descompactar. Melhor fazer:
cd ..
tar -czf workspace.tar.gz workspace
ou, se você não sabe o nome do diretório em que estava:
base=$(basename $PWD)
cd ..
tar -czf $base.tar.gz $base
(Isso pressupõe que você não seguiu links simbólicos para chegar onde está e que o shell não tenta adivinhar você saltando para trás através de um link simbólico - bash
não é confiável a este respeito. Se você tiver que se preocupar com isso, uso cd -P ..
para fazer um diretório de mudança física. Estúpido que não seja o comportamento padrão na minha opinião - confuso, pelo menos, para aqueles para quem cd ..
nunca teve qualquer significado alternativo.)
Um comentário na discussão diz:
Preciso excluir o diretório superior e [...] preciso colocar o tar no diretório base.
A primeira parte do comentário não faz muito sentido - se o arquivo tar contém o diretório atual, ele não será criado quando você extrair o arquivo desse arquivo porque, por definição, o diretório atual já existe (exceto em circunstâncias muito estranhas )
A segunda parte do comentário pode ser tratada de duas maneiras:
- Ou: crie o arquivo em outro lugar -
/tmp
é um local possível - e mova-o de volta para o local original depois de concluído.
- Ou: se você estiver usando GNU Tar, use a
--exclude=workspace.tar.gz
opção. A string após o =
é um padrão - o exemplo é o padrão mais simples - uma correspondência exata. Você pode precisar especificar --exclude=./workspace.tar.gz
se está trabalhando no diretório atual, contrariando as recomendações; você pode precisar especificar --exclude=workspace/workspace.tar.gz
se está trabalhando em um nível acima, conforme sugerido. Se você tiver vários arquivos tar para excluir, use ' *
', como em --exclude=./*.gz
.