viernes, 6 de julio de 2012

Crear copia de un archivo añadiendo la fecha en el nombre (bash script).










Todo el que ha programado o administrado un SO ha hecho copia de seguridad de su código o archivo de configuración antes de modificarlo, "por si las moscas". Es una práctica muy útil y recomendable, ya que en caso de que metamos la pata, podremos volver atrás. Existen aplicaciones de control de versiones como Git y Subversion, pero nosotros nos quedaremos en un ejemplo sencillo en el que copiaremos un archivo que nos sirva de respaldo. Al nombre del archivo copiado le añadiremos la fecha actual, todo ello mediante un script. Finalmente indicaremos cómo programar esta tarea para que se ejecute periódicamente usando Crontab


Creando un archivo. 

En este primer ejemplo lo que se hace es formatear la fecha actual y guardarla en la variable "_hoy". Luego se guarda la ruta y el nombre del nuevo archivo en la variable "_archivo" y se le concatena la fecha a esa variable. Finalmente se crea el archivo. Aquí el script: 

#!/bin/bash 
_hoy=$(date +"%m_%d_%Y") 
_archivo="/tmp/miPrueba.txt$_hoy" 
echo prueba > "$_archivo" 

 

Copiando un archivo 

 Lo mismo que el anterior, solo cambiamos la última línea, en la que se copia el archivo miPrueba.txt y en mi caso se crea miPrueba.txt06_19_2012 . 

#!/bin/bash 
_hoy=$(date +"%m_%d_%Y") 
_archivo="/tmp/prueba.txt$_hoy" 
cp prueba.txt "$_archivo" 

 

 

Programando la tarea de ejecución del script 

Puede ser interesante programar las copias para que se hagan diariamente, por ejemplo. Ésto se puede hacer mediante Crontab, cómo ya vimos en el artículo Crontab: ejecución de tareas automáticas en segundo plano . Para ello, editaremos el archivo crontab: 

crontab -e 


Y añadiremos al final ésto: 

15 0 * * * sh copia.sh 


Con ésto se lanzaría el script todos los días a las 0h 15m (si el equipo está encendido), con lo que obtendríamos una copia diaria del archivo.

Espero que haya sido de ayuda. Para cualquier duda u observación, podéis utilizar los comentarios.




Felinfo: Java, Linux, Virtualización. Open Source.  ©Template Blogger Green by Dicas Blogger .

TOPO