3 votos

¿Cómo puedo comprimir una carpeta mediante la línea de comandos manteniendo su estructura de archivos?

Por ejemplo, si quiero comprimir /Users/admin/Downloads/Backup y estoy en /Users/admin/ podría:

zip -r downloads.zip /Users/admin/Downloads/Backup

y si descomprimo downloads.zip Yo obtendría una carpeta Users y tendría una estructura Users => admin => Downloads => Backup.

Este comportamiento es particularmente indeseable si quiero crear un archivo zip de instalación para TWRP.

Así que en su lugar tendré que hacerlo:

cd /Users/admin/Downloads/Backup; zip -r /Users/admin/downloads.zip .; cd /Users/admin/

Esto no parece lo que haría un profesional.

¿Qué puedo hacer para comprimir una carpeta manteniendo su estructura de archivos?

0 votos

Un profesional lo haría, pero quizás lo pondría todo en un script para no tener que teclear tanto.Usarían pushd/popd en lugar de cd para que el directorio al que vuelvas sea donde estabas cuando llamaste al script - y no ~/admin cada vez.

0 votos

¿Hay alguna razón por la que quiera utilizar zip y no tar con gzip ¿Compresión? Es mucho más fácil, pero puede que tengas una necesidad específica.

0 votos

@Allan TWRP no soporta el alquitrán.

1voto

Michael Zhou Puntos 167

Un "profesional" primero leería el manual. Ahora bien, el zip El manual está lleno de basura, pero a lo largo de la lectura encontrarás: "zip almacenará la ruta completa (relativa al directorio actual)". Más adelante en la lectura encontrará una opción para eliminar todas las rutas en su archivo zip, pero no es una gran idea, ya que puede crear un archivo "bomba" que contaminará el directorio en el que se extrae. Es mejor contener tu archivo dentro de su propio directorio.

cd /Users/admin/Downloads
zip -r downloads Backup
mv -- downloads.zip some/other/location
cd -
  • Primero cambiamos el directorio a /Users/admin/Downloads
  • Nombramos el archivo (descargas) y se añadirá .zip al nombre del archivo
  • Recurrimos a través del directorio Backup añadiendo todos los ficheros, incluyendo el directorio padre, al archivo
  • mover el archivo zip a otra ubicación
  • Por último, llamamos a la variable de entorno OLDPWD para volver al directorio original. cd -

1voto

Pickle Puntos 2099

No estoy seguro si esto es realmente lo que quieres, ya que puedes usar la línea de comandos o un script pero hay opciones.

En primer lugar, no proporcione la ruta completa para el archivo

 cd folder; zip -r ../zipped_dir.zip *

O para un script podría utilizar cd o pushd y popd para moverse en el directorio que será root del archivo antes de emitir el comando zip. La forma de hacerlo exactamente dependerá de cómo el script sepa qué debe comprimir. Pero, si por ejemplo quieres que admin/Downloads/Backup/carpeta se comprima con rutas internas de sólo ./carpeta, necesitarías hacer esto:

pushd /Users/admin/Downloads/Backup
zip -r /path/to/out.zip ./folder/
popd

Esto hará que su out.zip contenga las rutas relativas que desea.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X