Sim, é possível fazer isso e há uma opção de comando zip
especialmente projetada para essa finalidade. Eu mostrarei a você um exemplo e você poderá adaptá-lo a seus próprios propósitos.
Primeiro, criei um arquivo zip da minha pasta de script com o seguinte comando (trabalhando na minha pasta pessoal):
zip -r Scripts.zip Scripts
Agora, isso teve 76 itens. Em seguida, adicionei 2 pdfs à pasta Scripts no disco e, em seguida, executei o seguinte comando e transferi apenas os arquivos novos e alterados para um novo arquivo zip:
zip -r Scripts.zip Scripts -DF --out new.zip
Esta foi a saída:
updating: Scripts/ (stored 0%)
adding: Scripts/GIMP+Magazine+Issue+1.pdf (deflated 2%)
adding: Scripts/Whitepaper-CentralisedLogging-v1.pdf (deflated 10%)
Agora, apenas esses dois novos arquivos estão em new.zip
e não foram adicionados ao zip original. No comando, a opção -DF
nos permitiu criar um 'arquivo de diferenças' especificado com a opção --out
, para que quaisquer novos arquivos presentes na pasta no disco, mas não no zip original, fossem para o novo zip . Então, de acordo com a página man, é realmente possível
crie um arquivo que contenha todos os arquivos novos e alterados desde o arquivo original foi criado. Para que isso funcione, a lista de arquivos de entrada e o diretório atual devem ser os mesmos que durante a operação zip original.
Existem algumas opções interessantes para brincar com o zip, por isso, consulte man zip
ou o Manpages do Ubuntu online .