Adicionando arquivos descompactados a uma pasta compactada

Adicionando arquivos descompactados a uma pasta compactada

Estou tentando adicionar arquivos descompactados a uma pasta já compactada existente, por exemplo new folder.zip. É possível usar zip -r new folder.zipdepois de adicionar alguns arquivos descompactados a eles? Este comando compactará a pasta? Existe alguma alternativa para fazer isso?

Responder1

Use o sinalizador de atualização:-u

Exemplo:

zip -ur existing.zip myFolder

Este comando irá compactar e adicionar myFolder(e seu conteúdo) ao arquivo existing.zip.


Uso avançado:

O sinalizador de atualização na verdade compara os arquivos recebidos com os existentes e adiciona novos arquivos ou atualiza os existentes.

Portanto, se você deseja adicionar/atualizar um subdiretório específico dentro do arquivo zip, basta atualizar a fonte conforme desejado e compactar novamente a fonte inteira com o -usinalizador. Apenas os arquivos alterados serão compactados.

Se você não tiver acesso aos arquivos de origem, poderá descompactar o arquivo zip, atualizar os arquivos desejados e compactar novamente com o -usinalizador. Novamente, apenas os arquivos alterados serão compactados.

Exemplo:

Estrutura de origem original


ParentDir
├── file1.txt
├── file2.txt
├── ChildDir
│   ├── file3.txt
│   ├── Logs
│   │   ├── logs1.txt
│   │   ├── logs2.txt
│   │   ├── logs3.txt

Estrutura de origem atualizada


ParentDir
├── file1.txt
├── file2.txt
├── ChildDir
│   ├── file3.txt
│   ├── Logs
│   │   ├── logs1.txt
│   │   ├── logs2.txt
│   │   ├── logs3.txt 
│   │   ├── logs4.txt <-- NEW FILE 

Uso

$ zip -ur existing.zip ParentDir 
> updating: ParentDir/ChildDir/Logs (stored 0%)
>   adding: ParentDir/ChildDir/Logs/logs4.txt (stored 96%)

Responder2

Acredito que você pode adicionar arquivos usando este comando:

zip -r zipfile.zip newfile.txt newfile1.txt

A -ropção do comando zip permite adicionar arquivos.

Responder3

Usei com sucesso o zipcomando. com ocrescerOpção (-g), para adicionar uma subpasta folder1/folder2contendo os arquivos fileA.txte fileB.txt:

zip -gr folder.zip folder1/folder2

-rsignificarecursodir.

Pelo que entendi, -g deve aumentar os arquivos zip, não criando um novo arquivo zip (que pode ser útil com arquivos zip muito grandes). Em caso de problemas você pode tentar primeiro criar subpastas em folder.zip com (por exemplo):

zip -g folder.zip folder1
zip -g folder.zip folder2

Responder4

Se você tiver muitos arquivos no mesmo local do seu arquivo zip e quiser copiar todos eles para o arquivo, você pode fazer:

zip -ur zipfile.zip !(zipfile.zip)

Isso atualiza seu arquivo zip (a -uopção) recursivamente ( -ropção) com todos os arquivos encontrados, exceto o próprio arquivo zip ( !é a negação do arquivo zip)

Então, você pode simplesmente excluir todos os arquivos, exceto o arquivo zip, seguindo a mesma regra acima:

rm !(zipfile.zip)

informação relacionada