.7zarquivos são arquivos frequentemente compactados com algum tipo de algoritmo, enquanto .tararquivos são apenas arquivos.
Eles diferem em seu escopo e, na maioria dos casos, uma conversão exigiria uma descompactação opcional sempre seguida de uma extração do arquivo de origem. Mesmo se um .7zarquivo não usasse nenhuma compactação, ainda assim exigiria uma extração.
Dito isto, se você pretendia [descompactar] / extrair / pesquisar o arquivo de origem de uma só vez, a resposta é que você não pode, pelo menos não usar as ferramentas padrão do Ubuntu porque tarnão pode lerstdin , então você não pode canalizar 7ze tar. De qualquer forma, é muito fácil automatizar tudo em um único comando:
mkdir tmp && 7z x <path_to_source_archive> -otmp && tar cf archive.tar tmp && rm -rf tmp
* <path_to_archive> = caminho para o .7zarquivo de origem
Além disso, o tempo necessário para que os arquivos do arquivo de origem sejam gravados no disco e para que os arquivos extraídos sejam lidos para descompactar / extrair / pesquisar o arquivo de origem em duas etapas é um gargalo para a tarefa inteira, principalmente (embora não somente) devido à baixa velocidade de E / S de um disco em potencial, portanto, uma solução parcial seria armazenar os arquivos temporários em um ramdisk para quase anular o gargalo geral:
- Crie o ponto de montagem para o sistema de arquivos do ramdisk:
sudo mkdir /mnt/tmpfs
- Monte o sistema de arquivos do ramdisk:
sudo mount -t tmpfs -o size=<tmpfs_size> tmpfs /mnt/ramdisk* <tmpfs_size> = tamanho do sistema de arquivos em bytes * 10 3 (1, 1K, 1M, 1G, ...)
- Execute
mkdir /mnt/tmpfs/tmp && 7z x <path_to_source_archive> -o/mnt/tmpfs/tmp && tar cf archive.tar /mnt/tmpfs/tmp && rm -rf /mnt/tmpfs/tmp* <path_to_archive> = caminho para o .7zarquivo de origem
- Desmonte o sistema de arquivos do ramdisk:
sudo umount
- Remova o ponto de montagem do sistema de arquivos do ramdisk:
sudo rmdir /mnt/tmpfs
.7zarquivo em outro computador?