Estou tentando adicionar arquivos descompactados a uma pasta já compactada existente, por exemplo new folder.zip
. É possível usar zip -r new folder.zip
depois 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 -u
sinalizador. 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 -u
sinalizador. 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 -r
opção do comando zip permite adicionar arquivos.
Responder3
Usei com sucesso o zip
comando. com ocrescerOpção (-g), para adicionar uma subpasta folder1/folder2
contendo os arquivos fileA.txt
e fileB.txt
:
zip -gr folder.zip folder1/folder2
-r
significarecursodir.
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 -u
opção) recursivamente ( -r
opçã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)