Quero criar um tarball de uma estrutura de diretórios. Eu sei que posso compactar o diretório inteiro executando tar czvf testdir
ou todos os arquivos nele contidos com tar czvf testdir/*
. Mas o que eu quero fazer é excluir todos os arquivos de uma determinada extensão que ocorrem em qualquer lugar do diretório. Por exemplo, quero compactar todos os arquivos na mesma estrutura de diretórios, mas deixar todos .pyc
os arquivos de fora.
Isso é possível?
Responder1
Sim, é possível e simples.
Como Hastur mencionou, o comando que você deseja é:
tar --exclude='*.pyc' czvf testdir.tgz testdir
E quero acrescentar que se você tiver alguma dúvida sobre qualquer comando de terminal que esteja usando no Linux (ou no Mac OS X), o melhor lugar para começar é com a documentação oficial. Digite man tar
e você puxará para cima. Você pode pesquisar na página de manual (página de manual) digitando /searchterm
(e n
para a próxima correspondência) e pode rolar pela página usando f
e b
, d
e u
, ou j
e k
dependendo de quanto deseja rolar em uma única etapa.
“Mas a documentação tem décadas em alguns casos!” Sim, é... e as ferramentas que você está usando também. Eles resistiram ao teste do tempo. Na verdade, a página de manual deve ser sempre o PRIMEIRO recurso se você estiver tendo problemas.
Digitação man tar
seguida de /exclude
rendimento:
--exclude=PATTERN
exclude files, given as a PATTERN