119 votes

Comment mettre à jour un fichier dans une archive zip

Est-il possible de remplacer un fichier dans un fichier zip sans le décompresser ?

Le fichier à mettre à jour est un fichier XML qui se trouve dans une énorme archive zip. Pour mettre à jour ce fichier XML, je dois décompresser l'archive, supprimer l'ancien fichier XML, ajouter le nouveau, puis recompresser l'archive. Cela prend un temps considérable. Je voudrais donc pouvoir remplacer ce fichier XML par un script. J'ai déjà celui qui vérifie les mises à jour du XML que j'ai.

en utilisant la commande zip
Désolé, j'utiliserais bien la commande zip pour faire ce genre de choses mais le problème est que le script est en fait pour un téléphone Android et zip n'est pas une commande que je peux utiliser, malheureusement désolé d'avoir oublié cela. J'aurais bien utilisé zip si j'avais pu mais je n'ai que unzip pour droid et puis il y a tar dans busybox mais tar ne fait pas ce dont j'ai besoin.

5voto

Vous pouvez utiliser : zip -u file.zip chemin/fichier_à_mettre_à_jour

1voto

Guilherme Rocha Points 455

Il existe également l'option -f qui permet de rafraîchir le fichier zip. Elle peut être utilisée pour mettre à jour TOUS les fichiers qui ont été mis à jour depuis que le fichier zip a été généré (en supposant qu'ils se trouvent au même endroit dans l'arborescence du fichier zip).

Si votre fichier s'appelle /myfiles/myzip.zip, tout ce que vous avez à faire est de

zip -f /myfiles/myzip.zip

0voto

Nickolay Olshevsky Points 8155

Du point de vue de la structure de l'archive ZIP, vous pouvez mettre à jour un fichier zip sans le recompresser. Il vous suffit de sauter tous les fichiers antérieurs à celui que vous devez remplacer, puis de placer votre fichier mis à jour, et ensuite le reste des fichiers. Enfin, vous devrez placer la structure de répertoire centrale mise à jour. Cependant, je doute que les outils les plus courants vous permettent de faire cela.

0voto

mzsolt Points 51

7zip (7za) peut être utilisé pour ajouter/mettre à jour des fichiers/répertoires :

Exemple : Remplacer (sans tenir compte de la date du dossier) le MANIFEST.MF dans un fichier JAR. Le fichier /source/META-INF contient le fichier MANIFEST.MF que vous souhaitez placer dans le fichier jar (zip) :

7za a /tmp/file.jar /source/META-INF/

Mise à jour uniquement (ne remplace pas la cible si la source est plus ancienne)

7za u /tmp/file.jar /source/META-INF/

-2voto

The Surrican Points 12882

Oui, c'est possible.

sur les systèmes linux, il suffit d'installer zip et de l'appeler en ligne de commande. consultez la page de manuel : http://linux.die.net/man/1/zip

mais d'après mon expérience personnelle, si c'est possible et si la compression n'est pas si importante, cela fonctionne mieux avec des fichiers tar simples et tar.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X