Ajout de fichiers décompressés à un dossier zippé

33

J'essaie d'ajouter des fichiers décompressés à un dossier déjà zippé existant new folder.zip. Est-il possible de les utiliser zip -r new folder.zipaprès y avoir ajouté des fichiers décompressés? Cette commande compressera-t-elle le dossier? Y a-t-il une alternative pour ce faire?

boo na
la source
vous pouvez le rediriger, décompressez le fichier d'origine | puis zippez l'intégralité du contenu afin de créer un tout nouveau fichier. Je ne sais pas comment vous feriez cela avec une seule commande.
unixmiah

Réponses:

44

Utilisez l'indicateur de mise à jour: -u

Exemple:

zip -ur existing.zip myFolder

Cette commande va compresser et ajouter myFolder(et son contenu) au fichier existing.zip.


Utilisation avancée:

L'indicateur de mise à jour compare en fait les fichiers entrants à ceux existants et ajoutera de nouveaux fichiers ou mettra à jour les fichiers existants.

Par conséquent, si vous souhaitez ajouter / mettre à jour un sous-répertoire spécifique dans le fichier zip, mettez simplement à jour la source comme vous le souhaitez, puis recompressez la source entière avec l' -uindicateur. Seuls les fichiers modifiés seront compressés.

Si vous n'avez pas accès aux fichiers source, vous pouvez décompresser le fichier zip, puis mettre à jour les fichiers souhaités, puis recompresser avec l' -uindicateur. Encore une fois, seuls les fichiers modifiés seront compressés.

Exemple:

Structure source d'origine


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

Structure source mise à jour


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

Usage

$ zip -ur existing.zip ParentDir 
> updating: ParentDir/ChildDir/Logs (stored 0%)
>   adding: ParentDir/ChildDir/Logs/logs4.txt (stored 96%)
Ethan Strider
la source
Merci! Comment puis-je spécifier le dossier dans le zip pour l'ajouter?
Aaron Esau
J'ai ajouté une section pour répondre à votre question. :)
Ethan Strider
0

Je pense que vous pouvez ajouter des fichiers en utilisant cette commande:

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

L' -roption de la commande zip vous permet d'ajouter des fichiers.

ryekayo
la source
-rest une option récursive.
ctrl-alt-delor
@richard, je vais arranger ça. Donne
moi
@richard, il s'avère que la source que j'ai obtenue dit que vous pouvez utiliser la commande -r pour modifier un fichier zippé existant: linuxnix.com/2014/05/…
ryekayo
2
add - Met à jour les entrées existantes et ajoute de nouveaux fichiers. Si l'archive n'existe pas, créez-la. Il s'agit du mode par défaut. (aucune option n'est nécessaire pour remplacer ou ajouter des fichiers. -rpeut être utilisé si vous ajoutez des répertoires, ou lorsque vous n'ajoutez pas de répertoires. Donc, en bref, l'exemple est correct, mais l'explication est fausse.) (Mieux vaut le tester, c'est juste mon interprétation du manuel).
ctrl-alt-delor
2
Pour des raisons de sécurité, êtes-vous sûr de vouloir modifier une archive existante? Au lieu de cela, je ferais au moins une copie de sécurité, ferais l'ajout, puis revérifier l'intégrité de l'archive avant de valider la nouvelle.
mdpc
0

L'indicateur -u fonctionne pour les fichiers

zip -ur zip_to_upload.zip file_to_add.txt

Cordialement

David Lopes
la source
0

J'ai utilisé avec succès la zipcommande. avec le grossissement l' option (-G), afin d'ajouter un sous - dossier folder1/folder2contenant les fichiers fileA.txtet fileB.txt:

zip -gr folder.zip folder1/folder2

-rsignifie recurse dir.

D'après ma compréhension, -g devrait augmenter les fichiers zip, pas créer un nouveau fichier zip (qui peut être utile avec de très grandes archives zip). En cas de problème, vous pouvez d'abord essayer de créer des sous-dossiers dans folder.zip avec (par exemple):

zip -g folder.zip folder1
zip -g folder.zip folder2
Fabiano Tarlao
la source
0

Si vous avez beaucoup de fichiers au même endroit avec votre archive zip et que vous souhaitez tous les copier dans l'archive, vous pouvez faire:

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

Cela met à jour votre fichier zip (l' -uoption) de manière récursive ( -roption) avec tous les fichiers trouvés sauf le fichier zip lui-même ( !c'est la négation du fichier zip)

Ensuite, vous pouvez simplement supprimer tous les fichiers à l'exception du fichier zip en suivant la même règle ci-dessus:

rm !(zipfile.zip)
despina
la source