¿Cómo puedo crear y extraer archivos zip desde la línea de comandos?
¿Cómo puedo crear y extraer archivos zip desde la línea de comandos?
Respuestas:
Típicamente se utiliza tar
para crear un archivo sin comprimir y, o bien gzip
o bzip2
para comprimir ese archivo. El correspondiente gunzip
y bunzip2
los comandos pueden ser utilizados para descomprimir dicho archivo, o simplemente puede usar banderas en el tar
comando para realizar la descompresión.
Si se refiere específicamente al formato de archivo Zip , simplemente puede usar los comandos zip
y unzip
.
Para comprimir:
zip squash.zip file1 file2 file3
o comprimir un directorio
zip -r squash.zip dir1
Para descomprimir:
unzip squash.zip
esto lo descomprime en su directorio de trabajo actual.
zip -r9 archive.zip files...
sintaxis (-r = recursiva -9 = compresión máxima).
zip
puede crear muchos sabores diferentes de archivos .ZIP, así como usar muchos compresores diferentes. Por otro lado, hay una serie de otras herramientas de compresión con nombres similares: 7-Zip, gzip, bzip2, rzip, etc., que no son intercambiables.
cd dir1; zip -r ../squash.zip *
unzip -d myfolder squash.zip
para extraer en un nuevo directorio separado ( myfolder
) en lugar de colocar todos los archivos directamente en el directorio actual, lo que puede ser molesto si el archivo zip contiene muchos archivos y directorios en su nivel superior. Esto imita cómo funciona la mayoría de las herramientas de descompresión de UI.
Hay una gran cantidad de formas diferentes de comprimir y descomprimir en derivados de UNIX, por lo que supondré que querías decir "zip" en el sentido genérico en lugar de un formato de archivo específico .
Puede comprimir archivos (en formato comprimido) con el tar
programa GNU :
tar -zcvf myfile.tgz .
que hará el directorio actual. Reemplace .
con otros nombres de archivo si desea algo más.
Para descomprimir ese archivo, use:
tar -zxvf myfile.tgz
Eso supone, por supuesto, que tiene la tar
capacidad de hacer la compresión y combinar archivos en uno.
De lo contrario, puede usar tar cvf
seguido de gzip
(nuevamente, si está disponible) para la compresión y gunzip
seguido de tar xvf
.
Para el manejo específico de archivos en formato ZIP, recomendaría descargar 7zip
y usar eso: reconoce una gran variedad de formatos de archivo, incluido el ZIP.
tar jcvf file.tar.bz2...
para comprimir en formato bzip2 o tar Jcvf file.tar.xz ...
para compresión xz.
Bueno, cuando se trata de distribuir archivos para una variedad de sistemas operativos, recomendaría 7-zip .
Por lo general, en el paquete p7zip
, obtendrá el comando 7z
y 7za
, con el que puede crear sus propios archivos 7z.
7za
también puede descomprimir archivos zip estándar ( pkzip ) (y crearlos también con el -tzip
interruptor).
Apresamiento:
7za a archive.7z file1 file2 directory/
Descomprimiendo:
7za x archive.7z
También puede crear archivos autoextraíbles con el -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 aconsejar una herramienta para eso: PeaZip ).
Si desea usar el mismo algoritmo de compresión con sus tarballs, use el -J
interruptor 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 forma 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 deberá usarlo tar
antes de usar 7z (pero dado que 7z almacena otra información sobre el tar
archivo, recomiendo usarlo xz
, ya que está diseñado para ello):
tar cf - file1 file2 dir | 7za z -si archive.tar.7z
atool
, es una pequeña herramienta agradable que hace que el uso de muchos compresores diferentes sea más cómodo. Asociar eso a
y crear un archivo se convierte a arc.7z folder/
o extraer un simplea arc.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 acf bravo.zip alfa.jpg
O:
bsdtar xf bravo.zip
tar
tiene la ventaja de admitir bastantes formatos de compresión adicionales en comparación con GNU tar
y otros tar
s. El mayor beneficio es, tal vez, que lo hace mientras usa una tar
sintaxis similar . Seguramente se puede utilizar 7z
, unrar
, unzip
, etc desde la línea de comandos, pero usar una diferente sintaxis.
La respuesta más estándar es pax
, que se recomienda sobre cpio
y tar
.
A diferencia de cpio
POSIX tar
, pero al igual que GNU tar
, pax
puede archivar y comprimir el archivo. Este comportamiento es diferente del zip
que comprime cada archivo antes de colocarlo en el archivo.
pax
Soporta archivos zip?
pax
archivos!
Esto cubre solo la extracción.
Para eso, comencé a usar dtrx
.
El objetivo es eliminar la complejidad. Así que simplemente le 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 lo uso zip
con la opción -@
.
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 -@