#! /bin/bash

if    test ! -d $HOME/mibackup
then
        mkdir  $HOME/mibackup
fi

dir=$HOME/mibackup

arg1=$1
shift
q=$*

# lo siguiente hasta antes de que se defina la funcion es para saber el nombre del directorio
cd $arg1
cd ..
for x in `ls`
	do
	if test -d $x
	then
		cd $x
		aux=`pwd`
		if test $arg1 = $aux
			then
			file=$x
		fi
		cd ..
	fi
done

#funcion que permite grabar los archivos requeridos en los argumentos alamacenados en q

function copy(){
	cd $1
	for var in $q
	do
		if test -f $var
		then
			cp $var $2
		fi
	done
}

#funcion que permite grabar los todos los argumentos

function copyall(){
	cd $1
	for j in `ls`
	do
		if test -d $1/$j
		then
			copy $1/$j $2/$j
			cd $1/$j
			y1=`pwd`
			cd $2/$j
			y2=`pwd`
			copyall $y1 $y2
		fi
	done

}
#esta funcion crea el arbol del directorio

function makedir(){
	cd $1
	for i in `ls`
		do
			if test  -d $1/$i
			then
				mkdir $2/$i
				cd $1/$i
				x1=`pwd`
				cd $2/$i
				x2=`pwd`
				makedir $x1 $x2
			fi
		done
}

# esta funcion se utiliza para borra los directorios creados que se encuentren vacios

function vacio(){
	clean=$1
	shift
	u=0
	if test $# -eq $u
	then
	rm -rf $clean
	fi
}

# esta funcion borra recursivamente todos los directorios creados que se encuentren vacios

function cleanall(){
	cd $1
	for ke in `ls`
	do
		if test -d $1/$ke
		then
			ki=$ke
			cleanall $1/$ke
			b=`ls`
			cd ..
			vacio $ke $b
		fi
	done
}

mkdir /tmp/$file
aux1=$arg1
aux2=/tmp/$file
aux3=0

if test -f $HOME/mibackup/$file.tgz
then
	rm -rf  $HOME/mibackup/$file.tgz
fi

if test ! $# -eq $aux3
then
        makedir $aux1 $aux2
	copyall $aux1 $aux2
        copy $aux1 $aux2

	chmod -R 700 $aux2
	cleanall $aux2
        cd /tmp
	echo Comprimiendo.........
	tar -cf  /$dir/$file $file
	cd $dir
	gzip -S .tgz $file
	cd /tmp
	rm -rf $file
else
	cp -r $aux1 /tmp
	chmod -R 700 $aux2
	cd /tmp
	echo Comprimiendo.........
	tar -cf  /$dir/$file $file
	cd $dir
	gzip -S .tgz $file
	cd /tmp
	rm -rf $file
fi
cd $dir
du -sk $file.tgz