web stats
Featured image of post Comprimir y descomprimir en Linux

Comprimir y descomprimir en Linux

Vamos a ver c贸mo podemos comprimir y descomprimir los diferentes tipo de paquetes en Linux.

Comprimir y descomprimir

Una de las tareas m谩s habituales en cualquier sistema operativo, es la compresi贸n y descompresi贸n de ficheros. Seg煤n el tipo de fichero, podemos realizar estas tareas de la siguiente manera en Linux, para los formatos de archivos m谩s comunes:

  • Archivos .tar.gz

    • Comprimir: tar -czvf empaquetado.tar.gz /carpeta/a/empaquetar/
    • Descomprimir: tar -xzvf archivo.tar.gz
    • Ver contenido sin descomprimir: tar -tf archivo.tar.gz
  • Archivos .tar

    • Empaquetar: tar -cvf paquete.tar /dir/a/comprimir/
    • Desempaquetar: tar -xvf paquete.tar
  • Archivos .gz

    • Comprimir: gzip -9 index.php
    • Descomprimir: gzip -d index.php.gz
  • Archivos .zip

    • Comprimir: zip archivo.zip carpeta
    • Descomprimir: unzip archivo.zip

Automatizaci贸n con script

Para facilitarnos la compresi贸n y descompresi贸n de fichero, podemos a帽adir el siguiente script a nuestro .bashrc o .zshrc. De esta forma, solo tenemos que indicar extract o compress seguido del nombre del fichero, y podemos olvidarnos del resto de sintaxis particular del formato.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
## COMPRESSION FUNCTION ##
compress() {
    FILE=$1
    shift
    case $FILE in
        \*.tar.bz2) tar cjf $FILE $\*  ;;
        \*.tar.gz)  tar czf $FILE $\*  ;;
        \*.tgz)     tar czf $FILE $\*  ;;
        \*.zip)     zip $FILE $\*      ;;
        \*.rar)     rar $FILE $\*      ;;
        \*)         echo "Filetype not recognized" ;;
   esac
}

## EXTRACT FUNCTION ##
extract() {
    if \[ -f $1 \] ; then
        case $1 in
            \*.tar.bz2)   tar xjf $1     ;;
            \*.tar.gz)    tar xzf $1     ;;
            \*.bz2)       bunzip2 $1     ;;
            \*.rar)       unrar e $1     ;;
            \*.gz)        gunzip $1      ;;
            \*.tar)       tar xf $1      ;;
            \*.tbz2)      tar xjf $1     ;;
            \*.tgz)       tar xzf $1     ;;
            \*.zip)       unzip $1       ;;
            \*.Z)         uncompress $1  ;;
            \*.7z)        7z x $1        ;;
            \*)     echo "'$1' cannot be extracted via extract()" ;;
        esac
    else
        echo "'$1' is not a valid file"
    fi
}

Dividir y unir ficheros

Contamos con un fichero muy grande que necesitamos dividir en partes m谩s peque帽as o manejables, o el caso contrario… tenemos varios ficheros que necesitamos unir para obtener el fichero original.

Usamos split indicando el tama帽o de las partes deseado

1
split -b 300m -d fichero_grande.tar.gz ficheros_troceados.tar.gz.par

Despu茅s se pueden unir con un simple cat

1
cat ficheros_troceados* > fichero_grande
comments powered by Disqus
Creado con Hugo-Extended & theme Stack