#! /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