Eu quero criar um arquivo, através de um programa que estou escrevendo em c # e depois descomprimi-lo.
O arquivo conterá pastas de locais completamente diferentes, agrupados em 3 subdivisões principais.
Basicamente, o grupo A pode ter pastas \ x \ y \ z, \ x \ y \ m, \ x \ p \ q, o grupo B pode ter pastas \ x \ p \ r, \ x \ y \ t ... o local original pode dar apenas uma ligeira indicação da divisão, não posso usar o caminho para o agrupamento.
Eu estava esperando que eu pudesse usar as opções do 7z para colocar pastas em diferentes pastas dentro do zip, mas eu não consegui encontrar nenhuma dessas opções, então eu pensei em criar 3 zips dentro de um grande zip.
O problema que vejo é, a quantidade de dados é grande (centenas, milhares de GB) e, tanto quanto eu sei, zip over zip não é uma ótima idéia. (tipos de dados: principalmente tipo de imagem, pode ser tif ou outros formatos não compactados, mas também pode ser jpg)
Seria ótimo se eu pudesse zipar o rar ... Mas o 7z não usa o rar na compressão, apenas na descompressão.
Eu não quero ter que instalar vários programas - instalarei apenas o 7z.
A 7z tem, para empacotamento, as seguintes opções (do site): 7z, XZ, BZIP2, GZIP, TAR, ZIP e WIM. Eu usaria um deles para os arquivos internos e, em seguida, a opção 7z para o arquivo externo.
Qual é a melhor opção ? (para obter um arquivo melhor que não crie um zip maior do que apenas fazendo tudo de uma só vez)
Edit: Windows!
Respostas:
Se você está no Linux, você pode criar links simbólicos para os caminhos de pasta no seu disco rígido e adicionar essas pastas ao arquivo. Heck, você pode fazer isso no Windows com links simbólicos também.
Então, exemplo:
Você tem pastas
/a
,/b
,/c
e/d
(no Windows isso seriaC:\a
etc.)Sua estrutura de pastas desejada dentro do arquivo é:
ou alguma divisão arbitrária das pastas entre subdivisões.
Então, quando você vai para comprimir, você apenas
Então
e você pode ter um número arbitrário de diretórios dentro de cada subdivisão, de 0 a 1 a
N
.No Windows você não pode usar o
ln
comando; você terá que usar o mklink comando em vez disso.Você precisará de um programa que seja inteligente o suficiente para seguir links simbólicos (no Linux), mas no Windows, ele deve ser automático ... o arquivo não deve simplesmente colocar um link simbólico lá; ele deve ter os dados encontrados depois de desreferenciar o link simbólico. Pelo menos é assim que deve ser se você usar o subsistema Win32 (que eu inferir que o 7z faz).
Versão do Windows sob solicitação implícita do OP (de
cmd.exe
Concha):Então
fonte
7za
compressor de lá ....