Possível duplicata:
compactar um conjunto de diretórios e criar um arquivo compactado tar
Esta publicação descreve como compactar cada arquivo individualmente em uma estrutura de diretórios. No entanto, preciso fazer algo um pouco diferente. Preciso produzir um grande arquivo gzip para todos os arquivos em um determinado diretório. Também preciso especificar o nome do arquivo de saída para o arquivo compactado (por exemplo, files.gz) e substituir o antigo arquivo de arquivo compactado, se já existir.
gzip
por sua própria natureza, comprime apenas um único arquivo. Para colocar vários arquivos em um arquivo para gzipping subsequente, usetar
.Respostas:
tudo em folderToCompress irá para compressFileName
Edit: Após revisão e comentários, percebi que as pessoas podem se confundir com compressFileName sem uma extensão. Se desejar, você pode usar a extensão .tar.gz (como sugerido) com o compressFileName
fonte
compressFileName
por isso inclui a.tar.gz
extensão ou enlouquecerá todo mundo.tar -zcvf two-dirs.tar.gz dir-one dir-two
, criará um arquivo contendo dois diretórios.*
para compactar tudo no diretório atual, ou seja:tar -zcvf all.tar.gz *
existem muitos métodos de compactação que funcionam recursivamente na linha de comando e é bom saber quem é o público final.
ou seja, se for para ser enviado a alguém executando o Windows, o zip provavelmente será o melhor:
para outros usuários linux ou o seu tar é ótimo
É preciso ter cuidado com o alcatrão e como as coisas são alcatradas / extraídas, por exemplo, se eu executar
/ home / myusername
isso criará / home / myusername / etc / passwd
inseguro se todas as versões do tar fazem isso:
fonte
A publicação de @amitchhajer funciona para GNU tar. Se alguém encontrar esta postagem e precisar que ela funcione em um
GNU
sistema NÃO , poderá fazer isso:Para expandir o arquivo morto:
fonte
pigz
que é mais rápido, pois pode utilizar melhor a CPU (uma implementação multi-threaded do zip).