Es posible reemplazar un archivo en un archivo zip sin descomprimir eliminar el antiguo archivo de agregar el nuevo archivo y rezipping atrás?

Razón es que tengo un archivo zip que es realmente grande hay uno xml dentro del archivo zip que tengo que actualizar a veces. Descomprimir el zip y rezipping toma un largo tiempo. Así que me gustaría ser capaz de reemplazar el xml dentro del zip a través de una secuencia de comandos. Ya tengo que comprueba la existencia de actualizaciones en el xml que tengo.

Por lo que es posible reemplazar sólo el xml sin descomprimir y rezipping ?

Lo siento, me gustaría utilizar el zip de comandos para hacer cosas como esa, pero el problema es que el guión es realmente para un teléfono android y zip no es un comando puedo usar por desgracia lo siento, no dejó que se fuera. Yo habría usado zip definitivamente si pudiera pero sólo tengo que descomprimir para droid y, a continuación, no es tar en el busybox pero tar no hacer lo que tengo

  • se puede cambiar la pregunta del título a algo más significativo?
  • También, la pregunta podría haber sido una o dos frases. Aproximadamente el 80% de los que es la práctica del senderismo.
InformationsquelleAutor user577732 | 2011-01-25

10 Comentarios

  1. 51

    De la cremallera(1):

    Cuando se les da el nombre de un archivo zip, zip reemplazará con el mismo nombre de las entradas en el archivo zip o añadir entradas de los nuevos nombres.

    Tan sólo utilizar el zip comando como lo haría normalmente para crear una nueva .archivo zip que contiene un archivo, excepto el .nombre del archivo zip que especifique será el archivo existente.

    • Podría alguien dar un ejemplo, por favor? No entiendo la ayuda de la cremallera de comandos.
    • Digamos que con cremallera micarpeta utilizando zip -r myfolder.zip myfolder si desea actualizar myfolder/otherfolder/myfile.txt, seguir adelante y editar el archivo y ejecutar zip -r myfolder.zip myfolder/otherfolder/myfile.txt
    • Cómo hacerlo si el archivo a reemplazar no tiene el mismo nombre, ni la misma estructura que el archivo a ser repalced?
    • Usted tiene que tener el mismo nombre y la estructura 😉
  2. 63

    He encontrado el Linux zip archivo a ser incómodo para la sustitución de un único archivo en un zip. El jar utilidad del Kit de Desarrollo de Java puede ser más fácil. Considerar la común tarea de actualización de WEB/web.xml en un archivo JAR (que es solo un archivo zip):

    jar -uf path/to/myapp.jar -C path/to/dir WEB-INF/web.xml

    Aquí, path/to/dir es la ruta de acceso a un directorio que contiene el WEB-INF directorio (que a su vez contiene web.xml).

    • lo que si tengo que copiar sólo los archivos en lugar de la creación de un director WEB-INF que tiene ese archivo.
    • También en mi caso, el querido y viejo «tarro» util hizo el truco! Gracias!
  3. 36

    Tratar el siguiente:

    zip [zipfile] [file to update] 

    Un ejemplo:

    $ zip test.zip test/test.txt
    updating: test/test.txt (stored 0%)
    • Esta es la más fácil de comprender gracias a el ejemplo, gracias!
    • Tome en cuenta que usted debe ver a updating: en lugar de adding: si desea actualizar un archivo dentro del zip, de lo contrario se la adición de archivos en el zip, no la va a sustituir.
    • Tienes razón, no me he dado cuenta. Actualizado, gracias!
  4. 13

    Sé que esto es la vieja pregunta, pero yo quería hacer lo mismo. Actualización de un archivo en un archivo zip. Y ninguna de las anteriores respuestas realmente me ayudó.

    Aquí es lo que yo hice. Creado el directorio temp abc. Copiado file.zip a abc y extrae el archivo en ese directorio. He editado el archivo que yo quería editar.
    Luego, mientras está en abc, se ejecutó el comando siguiente

    [email protected] ~/temp/abc $ zip -u file.zip
    updating: content/js/ (stored 0%)
    updating: content/js/moduleConfig.js (deflated 69%)

    -u interruptor buscará cambiado/nuevos archivos y agregar en el archivo zip.

  5. 10

    Utilizar el indicador de actualización: -u

    Ejemplo:

    zip -ur existing.zip myFolder

    Este comando comprimir y agregar myFolder (y su contenido) a la existing.zip.


    Uso Avanzado:

    La actualización de la bandera en realidad compara los archivos entrantes en contra de los ya existentes y agregar nuevos archivos, o actualizar los existentes.

    Por lo tanto, si usted quiere agregar o actualizar un subdirectorio específico dentro del archivo zip, acabo de actualizar la fuente que desee y, a continuación, re-zip toda la fuente con el -u bandera. Sólo los archivos modificados serán comprimidos.

    Si usted no tiene acceso a los archivos de código fuente, puede descomprimir el archivo zip, luego de la actualización de los archivos que desee y, a continuación, re-zip con el -u bandera. De nuevo, sólo los archivos modificados serán comprimidos.

    Ejemplo:

    Fuente Original De La Estructura

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

    Actualizado Estructura De Origen

    
    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%)
  6. 1

    También hay la opción-f que va a refrescar el archivo zip. Puede ser utilizado para actualizar TODOS los archivos que han sido actualizados desde el zip se ha generado (suponiendo que están en el mismo lugar dentro de la estructura de árbol en el archivo zip).

    Si el archivo se denomina /myfiles/myzip.zip todo lo que tienes que hacer es

    zip -f /myfiles/myzip.zip
  7. 0

    Desde el lado de el archivo ZIP de la estructura puede actualizar el archivo zip sin recomprimir, usted sólo tendrá que saltar todos los archivos que antes de que el archivo que usted necesita para reemplazar, a continuación, poner su archivo actualizado y, a continuación, el resto de los archivos. Y por último tendrás que poner la actualización de la centeral estructura de directorios.
    Sin embargo, dudo que la mayoría de las herramientas comunes te permita hacer esto.

  8. 0

    7zip (7za) puede ser usado para añadir/modificar los archivos/directorios muy bien:

    Ejemplo:
    Sustituyendo (independientemente de la fecha de archivo) el MANIFEST.MF archivo en un archivo JAR. El /source/META-INF directorio contiene la MANIFEST.MF archivo que desea poner en la jar (zip):

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

    Sólo actualizar (no reemplazar el destino si el origen es más antiguo)

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

    sí, es posible.

    en sistemas linux sólo tiene que instalar zip y se puede llamar a la línea de comando. eche un vistazo a la página del manual: http://linux.die.net/man/1/zip

    pero en mi experiencia personal, si es posible y la compresión no es tan importante, esto funciona mejor con la llanura de archivos tar y el alquitrán.

Dejar respuesta

Please enter your comment!
Please enter your name here