.7z
arquivos são arquivos frequentemente compactados com algum tipo de algoritmo, enquanto .tar
arquivos 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 .7z
arquivo 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 tar
não pode lerstdin
, então você não pode canalizar 7z
e 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 .7z
arquivo 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 .7z
arquivo 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
.7z
arquivo em outro computador?