Crear script de copias de seguridad

Spanish Forum

Moderator: JCSenar

Post Reply
ceciliorf
Level 1
Level 1
Posts: 26
Joined: Thu Apr 13, 2017 6:22 pm

Crear script de copias de seguridad

Post by ceciliorf » Sun Jul 09, 2017 6:13 am

Hola.

Estoy interesado en crear un script para que haga todas las noches a una hora una copia de seguridad del home (por ejemplo), lo envíe a un smb:// o ftp y despues apague el equipo.

El problema es que soy novato y mis conocimientos no llegan a tanto.

¿ Alguna idea por donde empezar a mirar cómo hacerlo ?

User avatar
Wibol
Level 4
Level 4
Posts: 264
Joined: Fri Nov 27, 2015 7:00 am
Location: España

Re: Crear script de copias de seguridad

Post by Wibol » Sun Jul 09, 2017 10:31 am

Echale un vistazo a la carpeta /etc/cron.daily en la que encontrarás scripts que se ejecutan una vez al día.

Antes de realizar una consulta, no olvides:

ceciliorf
Level 1
Level 1
Posts: 26
Joined: Thu Apr 13, 2017 6:22 pm

Re: Crear script de copias de seguridad

Post by ceciliorf » Sun Jul 09, 2017 10:39 am

Gracias Wibol.

Lo de cron lo sabía más o menos.

Conoces algún buen tutorial de como hacer script ?

User avatar
hatteras
Level 9
Level 9
Posts: 2882
Joined: Fri Sep 24, 2010 6:43 pm
Location: En el paraiso en la tierra
Contact:

Re: Crear script de copias de seguridad

Post by hatteras » Sun Jul 09, 2017 11:45 am

Te aconsejo que le eches un vistazo a mi blog.
Encontraras 1 como escribir un script básico,
http://hatteras-blog.blogspot.com.es/20 ... asico.html
2 como programar tareas en modo gráfico o con un script,
http://hatteras-blog.blogspot.com.es/20 ... areas.html
http://hatteras-blog.blogspot.com.es/20 ... tivas.html
3 como y con que programas hacer copias de seguridad,
http://hatteras-blog.blogspot.com.es/20 ... ridad.html
http://hatteras-blog.blogspot.com.es/20 ... acion.html
http://hatteras-blog.blogspot.com.es/20 ... opias.html
y 4 como apagar el pc con un comando

dbus-send --system --print-reply --system --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop


http://hatteras-blog.blogspot.com.es/20 ... el-pc.html

http://hatteras-blog.blogspot.com.es/

Con todo ello, cogiendo un poco de aquí y un poco de allá podrás hacer lo que deseas...ánimo y al toro !!
Todos somos muy ignorantes. Pero no todos ignoramos las mismas cosas.
Es un placer ayudar, y ver que a alguien le es útil.
Es un placer pedir ayuda y ver que alguien te la da desinteresadamente.

Image

User avatar
Wibol
Level 4
Level 4
Posts: 264
Joined: Fri Nov 27, 2015 7:00 am
Location: España

[TUTORIAL] Programación de tareas con cron

Post by Wibol » Thu Jul 13, 2017 4:48 am

Cron se gestiona a través de crontab que es un archivo de configuración donde indicaremos qué es lo que se tiene que ejecutar y con qué periodicidad. Hay que tener en cuenta que puede haber tablas crontab para cada uno de los usuarios del equipo y por lo tanto también para el administrador.

Para ver el contenido de nuestra programación de tareas ejecutaremos la orden:

Code: Select all

crontab -l
Si lo que queremos ver son las de administrador, ejecutaremos:

Code: Select all

sudo crontab -l
Mientras que para editar nuestra tabla de programación de tareas ejecutaremos la orden:

Code: Select all

crontab -e
Como ayuda, he añadido a mi crontab lo siguiente:
##########################################################
#minuto (0-59), #
#| hora (0-23), #
#| | día del mes (1-31), #
#| | | mes (1-12), #
#| | | | día de la semana (0-6 donde 0=Domingo) #
#| | | | | comandos #
##########################################################
De esta manera tenemos una idea clara de dónde tiene que ir cada cosa…

Por otro lado, si queremos hacer una copia de seguridad de nuestra tabla de programación, solo tenemos que ejecutar la siguiente orden:

Code: Select all

crontab -l > copia-de-seguridad.txt
Mientras que para eliminar nuestra tabla de programación, sólo tendremos que ejecutar la orden:

Code: Select all

crontab -r
Por ejemplo, si queremos realizar una captura de pantalla todos los días a las 13:00, añadiremos la siguiente orden a nuestro crontab:

Code: Select all

0 13 * * * scrot -b -d 1 '%Y:%m:%d:%H:%M:%S.png' -e 'mv $f ~/Escritorio/'
Una utilidad interesante es sincronizar nuestro directorio local con un directorio remoto a una hora determinada. Por ejemplo, todos los días a las 12:00:

Code: Select all

0 12 * * * rsync -avz /home/lorenzo/datos/ 192.168.1.50:/home/lorenzo/datos
También podemos indicar más de una hora:

Code: Select all

0 6,12,18 * * * rsync -avz /home/lorenzo/datos/ 192.168.1.50:/home/lorenzo/datos
Nos haría la sincronización a las seis de la mañana, a las 12 y a las seis de la tardes.

Otra opción interesante es indicar un intervalo, por ejemplo, si queremos que la sincronización solo se realice de lunes a viernes le diríamos:

Code: Select all

0 6,12,18 * * 1-5 rsync -avz /home/lorenzo/datos/ 192.168.1.50:/home/lorenzo/datos
De esta manera la sincronización sería de lunes (1) a viernes (5), a las 6, a las 12 y a las 18 horas. Indicar que el domingo es el 0.

Ahora, ¿y si queremos realizar la programación de tareas en lugar de a una hora determinada, cada 15 minutos por ejemplo? Vamos a guardar la temperatura de nuestra CPU en un archivo para consultarlo posteriormente:

Code: Select all

* */15 * * *  cat /sys/class/thermal/thermal_zone0/temp >> /home/lorenzo/temperaturas.log
A parte de la programación de tareas que hemos visto, también existen algunas definiciones establecidas, que son las siguientes:
  • @yearly, equivale a 0 0 1 1 * esto es que la tarea se ejecutará una vez al año. En concreto el 1 de enero a las 0:00 (medianoche).
  • @monthly, equivale a 0 0 1 * *. La tarea se ejecutará una vez al mes. En particular se ejecutará el primer día del mes a las 0:00 (medianoche).
  • @weekly, equivale a 0 0 * * 0. La tarea se ejecutará una vez a la semana. En particular se ejecutará el domingo a las 0:00 (medianoche).
  • @daily, equivale a 0 0 * * *. La tarea se ejecutará una vez al día. Exactamente a las 0:00 (medianoche).
  • @hourly, equivale a 0 * * * *. La tarea se ejecutará al comienzo de cada hora.
  • @reboot, se ejecuta en el arranque. Esta es quizá la mas interesante de las definiciones establecidas, puesto que no se puede realizar de otra manera, y nos permite ejecutar acciones cuando arranca la máquina.
Algunos ejemplos de programación de tareas

A continuación verás algunos ejemplos de programación de tareas para que te hagas una idea de las opciones y posibilidades que este sistema te ofrece:

1.- Programación de una copia de seguridad todos los años el 10 de junio a las 8:30:

Code: Select all

    30 08 10 06 * /home/lorenzo/copia-de-seguridad.sh
2.- Realizar la copia de seguridad a las 10:00 y a las 20:00 todos los días de la semana:

Code: Select all

    00 10,20 * * * /home/lorenzo/copia-de-seguridad.sh
3.- La copia de seguridad la haremos cada hora entre las 8:00 y las 18:00 pero sólo los días laborables (de lunes a viernes):

Code: Select all

    00 08-18 * * 1-5 /home/lorenzo/copia-de-seguridad.sh
4.- En este caso la copia de seguridad la realizaremos cada 15 minutos entre las 8:00 y las 18:00 y de lunes a viernes:

Code: Select all

    */15 08-18 * * 1-5 /home/lorenzo/copia-de-seguridad.sh
5.- Ejecutar una tarea el primer domingo de cada mes. Esto es algo más complicado porque no se puede indicar claramente vía cron. Sin embargo se puede poner un condicional:

Code: Select all

0 8 * * 0 [ $(date +%d) -le 07 ] && /home/lorenzo/copia-de-seguridad.sh
6.- Ejecutar una tarea cada 30 segundos. Esto tampoco se puede definir mediante la programación de tareas de cron, pero hay una solución:

Code: Select all

* * * * * /home/lorenzo/copia-de-seguridad.sh
* * * * * sleep 30; /home/lorenzo/copia-de-seguridad.sh
7.- Ejecutar varias tareas en un momento determinado. Esto ya lo hemos adelantado en el punto anterior, y es que para ejecutar varias tareas sólo tenemos que separarlas mediante punto y coma:

Code: Select all

*/15 * * * * script1.sh; script2.sh; script3.sh
Fuente

Extraido de Programación de tareas con cron en Ubuntu, Linux Mint y derivados
Last edited by Wibol on Fri Jul 21, 2017 3:05 am, edited 2 times in total.

Antes de realizar una consulta, no olvides:

User avatar
hatteras
Level 9
Level 9
Posts: 2882
Joined: Fri Sep 24, 2010 6:43 pm
Location: En el paraiso en la tierra
Contact:

Re: Crear script de copias de seguridad

Post by hatteras » Thu Jul 13, 2017 4:55 am

¿ Que no quieres que se lea mi blog ?

De vez en cuando un toque de humor por las mañanas...
Todos somos muy ignorantes. Pero no todos ignoramos las mismas cosas.
Es un placer ayudar, y ver que a alguien le es útil.
Es un placer pedir ayuda y ver que alguien te la da desinteresadamente.

Image

Post Reply

Return to “Español (Spanish)”