De vez em quando, recebo um link para download de um arquivo de dados .zip de 6 GB que gostaria de:
download
descompactar
recomprimir com 7z, com uma senha
Eu gostaria de evitar o uso de arquivos temporários para cada etapa, porque usaria ~ 18 GB de operações de gravação no meu SSD, enquanto apenas 6 GB são necessários no final.
No Linux, provavelmente seria wget ... | unzip ... | 7z ...
com pipes.
Como fazer isso no Windows?
Nota: esta pergunta está vinculada a Faça o 7-Zip extrair um arquivo diretamente para um diretório, mas não uma duplicata, porque a pergunta vinculada abrange apenas a parte "7z temp" da pergunta, enquanto estou falando sobre um download+unzip+ cadeia 7z.
Também estou procurando uma solução de linha de comando , e não uma solução GUI de arrastar e soltar, como Fazer 7-Zip extrair um arquivo diretamente para um diretório .
A solução de linha de comando a seguir evita arquivos temporários para descompactação/compactação e funciona no Windows. Ele usa
-so
e-si
sinalizadores stdout/stdin de7z
.Observe que há apenas 1 correspondência para
*.mbox
no meu arquivo original, portanto, há apenas um arquivo a ser descompactado / compactado.Com vários arquivos, seria mais complexo, conforme observado por @DanielB em seu comentário:
Por fim, canalizar o download do ZIP original diretamente para
7z e
não seria possível porque os arquivos ZIP não podem ser descompactados em fluxo: eles geralmente têm um índice no final do arquivo , exigindo assim o arquivo inteiro antes de começar a descompactar.Para isso, podemos criar rapidamente um disco RAM
X:\
com OSFMount: