Se pide realizar un programa que realice una copia de los directorios que cuelguen de ~/importante/ en media/backup , siguiendo las siguientes directivas:
* Cada directorio que cuelga de ~/importante/ deberá de guardarse en un fchero .tgz.
* Cada fchero de backup deberá de tener el nombre el nombre del directorio seguido de la fecha.
La fecha estará en formato año , mes , dia . Por ejemplo, para copiar el directorio docencia deberá
de tener el nombre docencia_20140404.tgz .
Este es mi código
Código BASH:
Ver original
#!/bin/bash #mientras exista el archivo y no esté vacío while [ -s ~/importante/ ] do #obtengo la fecha en el formato año mes día (todo junto) fecha = date +"%Y%m%d" #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 #borro el fichero después de comprimirlo sudo rm -rf $fichero #muevo el fichero comprimido a la carpeta destino sudo mv prueba /media/backup #nos posicionamos en el destino cd /media/backup #cuento el numero de archivos numero=ls | wc -l if [$numero -gt 5]; then #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
como errores que me da:
- Crea el fichero comprimido en la carpeta "importante" pero de nombre le pone ".tgz .tgz .tgz ....." muchas veces
-Dentro del fichero comprimido me aparece /media/backup en lugar de los diversos directorios que hay en la carpeta "importante"
- Me da un bucle infinito, pero eso es normal ya que al ponerle el nombre ese tan raro al fichero comprimido, no se copia a /media/backup por lo que "importante" no se queda vacía nunca y no sale del bucle
Esto es lo que me devuelve la consola
Código Consola:
Ver original
./backup.sh: línea 28: [: falta un `]' Backup realizado correctamente ./backup.sh: línea 11: fecha: orden no encontrada tar: cd: No se puede stat: No existe el archivo o el directorio tar: Eliminando la `/' inicial de los nombres /media/backup/ /media/backup/prueba/ tar: Saliendo con fallos debido a errores anteriores mv: no se puede efectuar `stat' sobre «prueba»: No existe el archivo o el directorio 0
muchas gracias por vuestra ayuda
saludos