¿Cómo puedo crear y extraer archivos Zip desde la línea de comandos?
Por lo general, uno usa tar
para crear un archivo sin comprimir y gzip
o bzip2
para comprimir ese archivo. Los correspondientes gunzip
y bunzip2
los comandos se pueden usar para descomprimir dicho archivo, o simplemente puede usar banderas en el comando tar
para realizar la descompresión.
Si se refiere específicamente a formato de archivo Zip , simplemente puede usar los comandos Zip
y unzip
.
Para comprimir:
Zip squash.Zip file1 file2 file3
o para comprimir un directorio
Zip -r squash.Zip dir1
Para descomprimir:
unzip squash.Zip
esto lo descomprime en su directorio de trabajo actual.
Hay un verdadero vasto número de formas diferentes de comprimir y descomprimir en derivados de UNIX, así que voy a suponer que quiso decir "Zip" en el sentido genérico en lugar de un específico formato de archivo.
Puede comprimir archivos (en formato comprimido) con el programa GNU tar
:
tar -zcvf myfile.tgz .
que hará el directorio actual. Reemplazar .
con otros nombres de archivo si quieres algo más.
Para descomprimir ese archivo, use:
tar -zxvf myfile.tgz
Eso supone, por supuesto, que tiene un tar
capaz de hacer la compresión y combinar archivos en uno.
Si no, puedes usar tar cvf
seguido de gzip
(de nuevo, si está disponible) para compresión y gunzip
seguido de tar xvf
.
Para el manejo específico de archivos en formato Zip, recomendaría descargar 7Zip
y al usar eso, reconoce una variedad de formatos de archivo enorme, incluido el Zip.
Si no tiene instalados paquetes Zip y descomprimir y tiene Java, puede usar jar
para descomprimir:
jar -xf file.Zip
Bueno, cuando se trata de distribuir archivos para una variedad de sistemas operativos, recomendaría 7-Zip .
Generalmente en el paquete p7Zip
, obtendrás el 7z
y 7za
comando, con el que puede crear sus propios archivos 7z.
7za
también puede descomprimir archivos estándar ( pkzip ) Zip (y crearlos también con el -tzip
cambiar).
Apresamiento:
7za a archive.7z file1 file2 directory/
Descomprimiendo:
7za x archive.7z
También puede crear archivos autoextraíbles con -sfx
interruptor:
7za a -sfx archive.exe files1 file2 dir
Recomiendo este método en caso de que los usuarios de Windows no puedan abrir archivos 7z (en caso de que desee recomendar una herramienta para eso: PeaZip ).
Si quieres usar el mismo algoritmo de compresión con tus tarballs, usa -J
cambiar con tar
:
tar cJf archive.tar.xz file1 file2 dir
xz
es una herramienta UNIX, que utiliza LZMA2 para la compresión, pero funciona de la manera gz
, bz2
, etc. funciona. Incluso funciona como un filtro.
7z no crea archivos con información completa del sistema de archivos en UNIX, por lo que necesitaría usar tar
antes de usar 7z (pero dado que 7z almacena otra información sobre el archivo tar
, recomendaría usando xz
, ya que está diseñado para ello):
tar cf - file1 file2 dir | 7za z -si archive.tar.7z
unzip <filename>
y
Zip -r archive.Zip <filename> [filename]
Deberá asegurarse de que estos comandos estén instalados a través de su administrador de paquetes. No es más difícil que usar cualquier otra cosa en la línea de comando. Ciertamente es más simple que crear archivos con tar.
BSD Tar también puede hacer esto
bsdtar -a -c -f sunday.Zip sunday.jpg
O:
bsdtar -x -f sunday.Zip
Esto cubre solo la extracción.
Para eso, comencé a usar dtrx
.
El objetivo es eliminar la complejidad. Así que solo pasa cualquier archivo y se da cuenta de lo que hay que hacer con él. Zip, tar, gz ... El uso es siempre el mismo - dtrx archive.Zip
. Hace algunas preguntas y ya está.
dtrx
está disponible en la mayoría de los repositorios, por lo que puede apt
| yum
instalarlo.
A menudo me encuentro tratando de comprimir los archivos modificados en mi directorio de trabajo, ya sea para copiar todos los archivos modificados a otro directorio de trabajo de sandbox o para preservarlos por un corto tiempo porque quiero deshacer algunos de los cambios.
En ese caso, copio la lista de archivos modificados a un archivo temporal y uso Zip
con la opción [email protected]
.
Digamos que modifiqué los archivos Foo.h, Bar.cc y TestBar.cc.
Digamos que creo un archivo llamado modified-files.txt cuyo contenido es:
Foo.h
Bar.cc
TestBar.cc
Ejecuto el siguiente comando para comprimir esos archivos:
cat modified-files.txt | Zip modified-files.Zip [email protected]