Li sua pergunta várias vezes, é muito difícil de entender, mas acho que entendi agora. Você deseja que os arquivos sejam colocados em arquivos tar individuais e, em seguida, todos armazenados em um arquivo gz. Isso não vai funciona porque arquivos gz suportam apenas compactação de 1 arquivo e é por isso que as pessoas colocam os arquivos antes de comprimir com gz. Você pode fazer o oposto, colocar cada arquivo em um arquivo gz e colocar todos os arquivos arquivos gz em um único arquivo tar. Como alternativa, você pode simplesmente parar de usar formatos que exijam o dobro arquivamento e use um formato de arquivo que suporte vários arquivos, como zip.
A compactação dos arquivos dentro de um tar ainda resultará em acesso sequencial dos arquivos gz, porque o tar formato não suporta acesso aleatório. Arquivos compactados usam um catelogo centralizado para que o acesso aleatório a arquivos seja possível sem descompactar ou ler todo o arquivo. Eu não faço muito arquivamento no Linux, mas no Windows eu gosto de usar o 7-zip para criar arquivos zip com compressão lzma. É importante notar que qualquer um desses métodos, quando usado com compactação comparável ao seu tar.gz, irá gerar um arquivo maior devido à falta de compactação sólida, razão pela qual o tar.gz é muito popular no mundo linux comparado ao zip para distribuir software .
Crie uma série de arquivos GZ e armazene em um arquivo de alcatrão:
cp -a -n -v "/home/me/example/inputfiles/." --target-directory="/home/me/example/gzfiles"
Isto irá copiar os arquivos que você deseja arquivar para uma pasta diferente. Gunzip não permite manter o arquivos desarquivados originais, mas trabalhar a partir de uma cópia permitirá que você evite isso.
gzip -9 "/home/me/example/gzfiles/*"
Isso criará um arquivo gz separado de cada arquivo e usará a compactação máxima. Se o seu sistema não consegue lidar com isso tente um número menor; o número padrão é 6.
tar -cf "/home/me/example/tar/archive.tar" -C "/home/me/example/gzfiles ."
Isto irá criar um único arquivo tar que contém todos os arquivos gz.
Extrair um único arquivo de um arquivo GZ em um arquivo de alcatrão:
sudo apt-get install archivemount
Isso instalará o arquivo morto, uma ferramenta que pode montar arquivos tar em um diretório.
archivemount -o readonly "/home/me/example/tar/archive.tar" "/home/me/example/mount"
Isto irá montar o arquivo tar para que você possa extrair o arquivo gz desejado. Eu acredito que é possível extrair arquivos individuais de um arquivo tar com tar, mas eu não sei o comando, por isso estou usando essa abordagem.
gunzip -c "/home/me/example/mount/example1.txt.gz" > "/home/me/example/extract1/example1.txt"
Isso extrairá o arquivo. O Gunzip suporta apenas a extração para o diretório de origem ou para a saída padrão neste comando, usamos a saída padrão e, em seguida, canalizamos a saída para um arquivo.
sudo umount "/home/me/example/mount"
Isso desmontará o arquivo tar.
Extraia todos os arquivos de uma série de arquivos GZ em um arquivo de alcatrão:
cd "/home/me/example/extractall"
Isso coloca o terminal no diretório que você deseja extrair, pois o tar extrai para o diretório atual.
tar -xf /home/me/example/tar/archive.tar
Isso extrai os arquivos gz.
gunzip *.gz
Isso extrai o conteúdo dos arquivos gz para o diretório atual /home/me/example/extractall/
e remove
os arquivos gz.
Crie um arquivo ZIP:
cd "/home/me/example/inputfiles"
Isso coloca o terminal no diretório inputfiles, já que o zip cria um arquivo do diretório atual e salva nele.
zip -9 -r inputfiles inputfiles.zip *
Isso criará um arquivo zip de todo o conteúdo do diretório inputfiles, excluindo arquivos ocultos e usando a compactação máxima. O p7-zip seria uma ferramenta melhor para usar se você precisar de alta compactação.
mv "/home/me/example/inputfiles/inputfiles.zip" "/home/me/example/zip/archive.zip"
Isso permitirá que você renomeie o arquivo como quiser e mova-o para onde desejar.
Extrair um arquivo ZIP:
cd "/home/me/example/zip"
Isso coloca o terminal no diretório que contém o zip.
unzip -n archive.zip
Isso extrai o conteúdo dos arquivos zip para o diretório atual.