Primero que nada, tenés que eliminar los errores de sintaxis. Rápidamente se ven líneas con errores:
Código BASH:
Ver original#mientras exista el archivo y no esté vacío
while [ -s ~/importante/ ] # ERROR: -s es para probar que un archivo tenga un tamaño mayor que cero, no para directorios
do
#obtengo la fecha en el formato año mes día (todo junto)
fecha = date +"%Y%m%d" # ERROR, te faltan las comillas invertidas, o $()
#Nos posicionamos en el origen
cd ~/importante/
#obtengo el primer fichero
fichero=`ls | head -1`
#formo el nombre para el fichero comprimido (nombre_fecha)
nombre="$fichero""_""$fecha"".tgz"
#comprimo un archivo
tar -zcvf $nombre cd /media/backup #ERROR: dos comandos en la misma línea?
#borro el fichero después de comprimirlo
sudo rm -rf $fichero # ¿lo borras sin comprobar que tar haya creado el backup?
#muevo el fichero comprimido a la carpeta destino
sudo mv prueba /media/backup # ¿qué es "prueba"?
#nos posicionamos en el destino
cd /media/backup
#cuento el numero de archivos
numero=ls | wc -l # ERROR: de nuevo te faltan las comillas o $()
if [$numero -gt 5]; then # ERROR: siempre debe haber al menos un espacio después de [ y antes de ]
#obtenego el fichero más atiguo
fichero=`ls -rt | head -1`
#borro el fichero obtenido
sudo rm -rf $fichero
fi
echo 'Backup realizado correctamente'
done
El motivo por el cual te da resultados extraños es que tenés un montón de errores básicos. Si te ponés a pensar en lo que realmente estás haciendo, todos los efectos que mencionás son producto de esos errores.