Adicionando arquivos descompactados a uma pasta compactada


32

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


você pode canalizar, descompacte o arquivo original | feche o conteúdo inteiro como você criaria um arquivo totalmente novo. Não sei como você faria isso com um único comando.
Unixmiah

Respostas:


44

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 realmente 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, atualize a fonte conforme desejado e, em seguida, remova novamente a fonte inteira com o -usinalizador. Somente 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 depois compactar novamente com o -usinalizador. Novamente, apenas os arquivos alterados serão compactados.

Exemplo:

Estrutura original da fonte


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%)

Obrigado! Como posso especificar a pasta no zip para adicioná-la?
Aaron Esau

Adicionei uma seção para responder sua pergunta. :)
Ethan Strider

0

Eu 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.


-ré uma opção recursiva.
Ctrl-alt-delor

@ Richard, eu vou consertar isso. Dê-me alguns
ryekayo 13/10

@ Richard, despeja a fonte que eu tenho que partir diz que você pode usar o comando -r para modificar um arquivo compactado existente: linuxnix.com/2014/05/...
ryekayo

2
add - Atualiza entradas existentes e adiciona novos arquivos. Se o arquivo não existir, crie-o. Este é o modo padrão. (nenhuma opção é necessária para substituir ou adicionar arquivos. -rpode ser usada se você adicionar diretórios ou quando não estiver adicionando diretórios. Bem, sempre que você não quiser apenas adicionar o diretório e nenhum conteúdo, praticamente o tempo todo Portanto, em resumo, o exemplo está correto, mas a explicação está errada.) (Melhor testá-lo, essa é apenas a minha interpretação do manual).
Ctrl-alt-delor 13/10

2
Por motivos de segurança, TEM CERTEZA que deseja modificar um arquivo existente? Em vez disso, eu pelo menos faria uma cópia de segurança, faria a adição e depois verificaria novamente a integridade do arquivo antes de confirmar o novo.
Mdpc # 13/14

0

O sinalizador -u funciona para arquivos

zip -ur zip_to_upload.zip file_to_add.txt

Saudações


0

Eu usei com sucesso o zipcomando. com a opção grow (-g), para adicionar uma subpasta folder1/folder2contendo os arquivos fileA.txte fileB.txt:

zip -gr folder.zip folder1/folder2

-r significa recurs dir.

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

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

0

Se você tiver muitos arquivos no mesmo local que o seu arquivo zip e quiser copiar todos eles no arquivo morto, poderá:

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 )

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

rm !(zipfile.zip)
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.