Você pode tentar seguir:
tar -czf ./zips/someFile.tar.gz -C ./tmp/ someFolder
Eu tenho as seguintes pastas em uma máquina linux
./myFolder
./tmp
./packages
./zips
compress.sh
Eu corro tar -czf ./zips/someFile.tar.gz ./tmp/someFolder
de compress.sh
. A pasta é criada, mas o aninhamento resultante ocorre dentro do arquivo zip:
. -> tmp -> someFolder
Como posso compactar esse arquivo para que, quando eu abri-lo, seja apenas someFolder
e não someFolder
dentro de tmp
, dentro de .
?
Você pode usar o parâmetro -C
ou --directory
tar -czf ./zips/someFile.tar.gz -C ./tmp someFolder
De man tar
-C, --directory DIR
change to directory DIR
Exemplo
% ls -og
total 4
-rw-rw-r-- 1 0 Mai 21 18:39 bar
drwxrwxr-x 2 4096 Mai 21 18:39 foo
tar -cvf ../sample.tar -C /home/user/tmp .
tar -tvf ../sample.tar
drwxrwxr-x user/user 0 2015-05-21 18:39 ./
-rw-rw-r-- user/user 0 2015-05-21 18:39 ./bar
drwxrwxr-x user/user 0 2015-05-21 18:39 ./foo/
O comando tar
não zip. Nem mesmo com o sinalizador -z
. No entanto, ele coleta uma série de arquivos / pastas e, opcionalmente, compacta o resultado. Para contrastar, zip
comprime cada arquivo e o adiciona a um arquivo. zip
e tar
usam algoritmos de compactação diferentes.
A página man do tar mostra o -C
flag ( --directory
) para alterar o diretório, então você poderia fazer isso
tar czfC zips/someFile.tar.gz tmp someFolder
Você também pode usar a opção --transform
para remover a% principaltmp/
tar czf zips/someFile.tar --transform 's#^tmp/##' tmp/someFolder