CyberAlberto

Mi rincón personal en internet

Ampliación de los scripts de compresión

Hace unos días mostré el código para comprimir en formato .tar.gz y .tar.bz2.

Ahora lo he ampliado para que comprima en formato .tar.7z. El formato 7zip es un revolucionario sistema de compresión con altas tasas de compresión y es además multithreading.

El código del script ahora requiere de 4 ejecutables en el path: tar, gzip, bzip2 y 7za.

Script comprime:

#!/bin/bash

if [ "$2" = "gzip" ]; then
	echo "Se ha elegido gzip como compresor."
	compresor="z"
	extension="gz"
else
	if [ "$2" = "bzip" ]; then
		echo "Se ha elegido bzip2 como compresor."
		compresor="j"
		extension="bz2"
	else
		if [ "$2" = "" ]; then
			compresor="z"
			extension="gz"
		else
			if [ "$2" = "7zip" ]; then
				compresor="7"
				extension="7z"
			else
				echo "Error: El parámetro debe ser gzip, bzip o 7zip"
				exit 1
			fi
		fi
	fi
fi

if [ $1 ] ; then
	FICHERO=$(basename $1)
	if [ "$compresor" = "7" ]; then
		tar -cvf - . | 7za a -si ~/$FICHERO.tar.$extension
	else
		tar cvf$compresor ~/$FICHERO.tar.$extension .
	fi
	echo
	echo Fichero ~/$FICHERO.tar.$extension creado.
	exit 0
fi

echo
echo Script para comprimir ficheros y directorios, uso:
echo
echo $(basename $0) NOMBRE \[FORMATO\]
echo
echo \(Donde NOMBRE indica el nombre del fichero que se va a generar tras comprimir
echo el directorio actual y FORMATO el compresor a usar\)
echo
echo Nota: Si no se indica FORMATO, se utilizará gzip.
echo Formatos aceptados: gzip, bzip y 7zip
echo
exit 1

Script descomprime:

#!/bin/bash

if [ "$1" != "" ]; then
	if [ -f "$1" ] ; then
		DIRECTORIO=$(basename $(basename "$1" .tgz) .tar.gz)
		DIRECTORIO=$(basename $(basename "$DIRECTORIO" .tbz2) .tar.bz2)
		DIRECTORIO=$(basename $(basename "$DIRECTORIO" .t7z) .tar.7z)
		EXTCHK=$(basename $(basename "$1" .t7z) .tar.7z)
		if [ "$EXTCHK" = "$DIRECTORIO" ]; then
			EXTENSION="7z"
		else
			EXTENSION="(none)"
		fi
		if [ -d "$DIRECTORIO" ] ; then
			echo
			echo Error: No se puede descomprimir, existe el directorio ./$DIRECTORIO
			exit 1
		else
			mkdir "$DIRECTORIO"
			if [ "$EXTENSION" = "7z" ]; then
				7za e -so "$1" | tar -xvC "$DIRECTORIO"
			else
				tar -xvC "$DIRECTORIO" -f "$1"
			fi
			echo
			echo Fichero $1 descomprimido.
			exit 0
		fi
	fi
fi

echo
echo Script para descomprimir ficheros y directorios en formato .tgz \(.tar.gz\),
echo .tbz2 \(.tar.bz2\) o .t7z \(.tar.7z\), uso:
echo
echo $(basename $0) FICHERO
echo
echo \(Donde FICHERO indica el nombre del fichero comprimido\)
echo
echo Nota: se descomprime a un directorio el cual no debe existir.
echo
exit 1
Anuncios

Jueves, 19 febrero 2009 - Posted by | programación, Script bash

Sorry, the comment form is closed at this time.

A %d blogueros les gusta esto: