Shell script bash: ejercicios de archivos.


1. backup.sh **

Comprobará que ha recibido un parámetro. Si no es así mensaje y terminar.
El parametro debe corresponderse con un usuario del sistema. Si no es asi mensaje y terminar.
(Comprobar el nombre de usuario en /etc/passwd)
A continuación comprobará si existe el directorio /root/backups. De no ser así lo creará.
El siguiente paso será comprobar si existe el directorio /root/backups/usuario. De no ser así crearlo.
A continuación, a partir de la fecha del sistema, comprobar si existe un directorio llamado /root/backups/usuario/AAAAMMDD,
siendo AAAA las 4 cifras de año, MM 2 cifras de numero de mes y DD 2 cifras del dia del mes. Si existe el directorio, borrar todo su contenido. A continuación crear este directorio /root/backups/usuario/AAAAMMDD, y copiar en él todo el contenido del directorio home del usuario (Según está definido en /etc/passwd).

2.  backupsemanal.sh  **
El script gestionará un sistema de copias de seguridad cíclicas, según los distintos días de la semana.
Comprobará en primer lugar si existe un directorio llamado /var/semanales. Si no es así crearlo.
A continuación comprobará la fecha del sistema. Según el día de la semana de que se trate se hará una copia de todo el contenido del directorio /home en /var/semanales/lunes (si es lunes) en /var/semanales/martes (si es martes..) y así para cada día de la semana. Si alguno de estos directorios no existe debe crearse. Si ya existe, se borrará todo su contenido antes de copiar el contenido de /home.

3.  publicar.sh **
Si no recibe un parámetro, dar un mensaje y terminar.
Si el parametro no se corresponde con un archivo regular o directorio, dar un mensaje y terminar.
A continuación copiar este archivo o directorio en /var/www/html
Por último, agregar una línea a un archivo llamado /root/publicaciones.log con el siguiente formato :

AAAA MM DD HH MM SS RUTA

4. demoniodir.sh ***
Comprueba si ha recibido un parámetro. Si no mensaje y terminar. A continuación comprueba si el parámetro pasado es un directorio, en otro caso mensaje y terminar. Una vez pasadas las validaciones, muestra el contenido del directorio pasado como parámetro en pantalla usando ls, y se queda funcionando en segundo plano. El script con intervalos de 5 segundos comprueba si en el directorio hay algún archivo nuevo, y en ese caso avisa por pantalla.

5. borrar.sh *
Comprueba si ha recibido un parámetro, en otro caso mensaje y terminar.
Comprueba que el parámetro se corresponde con un directorio o fichero regular, en otro caso, mensaje y terminar.
A continuación comprobar si existe un directorio  ~/papelera, si no, crear.
Después comprobar si existe un directorio ~/papelera/aaaammdd siendo aaaammdd la fecha del sistema en formato numérico de año, mes y día. Si no existe, crear el directorio. Una vez hechas las comprobaciones mover el directorio o archivo pasado como parámetro al directorio ~/papelera/aaaammdd.


6. vaciapapelera.sh **
Comprobará el numero de parámetros recibidos. Si se llama sin parámetros borrará todos los directorios contenidos en ~/papelera después de pedir una confirmación por teclado del tipo : "Se borraran todos los archivos de la papelera. ¿Continuar? S/N" Haciendo el borrado solamente si se teclea la letra S.  La llamada con parámetro recibirá una fecha en formato aaaaammdd (por ejemplo: vaciapapelera.sh 20071201)  No es necesario validar que sea una fecha valida. El script debe borrar todos los directorios de papelera cuyas fechas sean inferiores a la pasada. En cualquiera de los casos, al terminar los borrados se informará de la cantidad total de bytes recuperados. (comando du: ver opciones en man)