Obre el menú principal

Diferència entre revisions de la pàgina «Backup utilitzant crontab»

Línia 1: Línia 1:
http://img696.imageshack.us/i/16793980.jpg/
+
http://img696.imageshack.us/i/16793980.jpg/  
 +
<img src="http://animaslespnatillas.galeon.com/imagenes/vaca.jpg" alt="descripción" />
 +
<br>
  
 +
L’objectiu d'aquest article és muntar backups de fitxers i directoris automics. visca el barça som els putos amus vale!! [modifica] Backup de directoris i fitxers 11-0 del año 1xxx
  
 +
loca loca loca didac Es tracta de fer un backup de tots els arxius del nostre usuari. Mantindrem un històric de backups, farem una còpia diària (dilluns, dimarts, dimecres, etc .), cada dilluns substituirem la còpia del dilluns anterior i així amb tots els dies.
  
L’objectiu d'aquest article és muntar backups de fitxers i directoris automics. visca el barça som els putos amus vale!!
+
<br> El procediment és senzill, triarem els directoris i fitxers de què volem fer el backup, i els copiarem.
[modifica] Backup de directoris i fitxers 11-0 del año 1xxx
 
  
loca loca loca didac
+
cp -rp ~/banyut /media/sdb5/backup/domingo
Es tracta de fer un backup de tots els arxius del nostre usuari. Mantindrem un històric de backups, farem una còpia diària (dilluns, dimarts, dimecres, etc .), cada dilluns substituirem la còpia del dilluns anterior i així amb tots els dies.
 
  
 +
<br> És totalment funcional, però la veritat és que no és eficient, el problema està en que cada dilluns ens farà una còpia completa de tots els arxius que tenim en el directori, quan el que seria desitjable és que només copiara els modificats o els creats des de l’últim backup.
  
El procediment és senzill, triarem els directoris i fitxers de què volem fer el backup, i els copiarem.
+
<br> No hi ha problema, tenim una altra instrucció que ens oferix esta funcionalitat.  
  
cp -rp ~/banyut /media/sdb5/backup/domingo
+
rsync -altgvbp /home/banyut /media/sdb5/backup/domingo  
  
 +
<br> El següent pas és que estes es realitzen de manera automàtica, per a això utilitzarem una altra instrucció que ens oferix el sistema crontab. Crontab ens permet executar aplicacions en un moment determinat, una única vegada o de manera recurrent. En un principi pot paréixer quelcom embolicadora però en realitat és molt fàcil d’usar.
  
És totalment funcional, però la veritat és que no és eficient, el problema està en que cada dilluns ens farà una còpia completa de tots els arxius que tenim en el directori, quan el que seria desitjable és que només copiara els modificats o els creats des de l’últim backup.
+
crontab -e
  
 +
<br> Esta instrucció ens permet editar l’arxiu /etc/crontab, en el que programarem les instruccions que volem executar. Cada esbossa d’este arxiu esta formada per 7 columnes
  
No hi ha problema, tenim una altra instrucció que ens oferix esta funcionalitat.
+
Minutos (de 0 a 59
  
rsync -altgvbp /home/banyut /media/sdb5/backup/domingo
+
Horas (de 0 a 23)  
 
 
 
 
El següent pas és que estes es realitzen de manera automàtica, per a això utilitzarem una altra instrucció que ens oferix el sistema crontab.
 
Crontab ens permet executar aplicacions en un moment determinat, una única vegada o de manera recurrent. En un principi pot paréixer quelcom embolicadora però en realitat és molt fàcil d’usar.
 
 
 
crontab -e
 
 
 
 
 
Esta instrucció ens permet editar l’arxiu /etc/crontab, en el que programarem les instruccions que volem executar.
 
Cada esbossa d’este arxiu esta formada per 7 columnes
 
 
 
Minutos (de 0 a 59
 
 
 
Horas (de 0 a 23)
 
  
 
Dia (de 1 a 31)  
 
Dia (de 1 a 31)  
Línia 44: Línia 35:
 
usuario (opcional)  
 
usuario (opcional)  
  
orden a ejecutar
+
orden a ejecutar  
  
 
+
<br> Un asterisc en qualsevol de les primeres 5 columnes indica tots, és a dir si volem que quelcom s’execute tots els mesos en la columna del mes podrem un asterisc. En realitat és un poc mas complex però de moment ja ens val així. Com funcionen estes columnes.  
Un asterisc en qualsevol de les primeres 5 columnes indica tots, és a dir si volem que quelcom s’execute tots els mesos en la columna del mes podrem un asterisc.
 
En realitat és un poc mas complex però de moment ja ens val així.
 
Com funcionen estes columnes.
 
  
 
     5 * * * * se ejecutara el minuto 5 de cada hora todos los días.
 
     5 * * * * se ejecutara el minuto 5 de cada hora todos los días.
Línia 63: Línia 51:
 
     0 3 * * 6 a las 03:00 horas de todos los sábados
 
     0 3 * * 6 a las 03:00 horas de todos los sábados
  
 +
<br> En cada una d’estes columnes podem posar més d’un valor, o inclús un rang, açò es fa separant cada valor per mitjà d’una coma o un rang per mitjà d’un guió. Així en la columna dia de la setmana podem posar 1,3,5 que indicara que s’execute els dilluns, dimecres i divendres. O en la columna mes per a indicar la primera quinzena podem posar 1-15. Açò encara podem complicar-ho un pèl més, tenim una altra operació el símbol “/”, que indica un increment, per exemple, si en la columna minuts posem */15 s’executarà cada 15 minuts, o si en la columna dies posem 1-10/2, s’executarà els dies 1,3,5,7 i 9.
  
En cada una d’estes columnes podem posar més d’un valor, o inclús un rang, açò es fa separant cada valor per mitjà d’una coma o un rang per mitjà d’un guió.
+
Finalment un exemple més complex.  
Així en la columna dia de la setmana podem posar 1,3,5 que indicara que s’execute els dilluns, dimecres i divendres. O en la columna mes per a indicar la primera quinzena podem posar 1-15.
 
Açò encara podem complicar-ho un pèl més, tenim una altra operació el símbol “/”, que indica un increment, per exemple, si en la columna minuts posem */15 s’executarà cada 15 minuts, o si en la columna dies posem 1-10/2, s’executarà els dies 1,3,5,7 i 9.
 
 
 
Finalment un exemple més complex.
 
  
 
     0 */2 1-15,23,28-31 * 0,6 S’executara cada dos hores els dies 1 al 15,el 23, 28, 29, 30 i 31 de tots els mesos però només quan siguen dissabte o diumenge.
 
     0 */2 1-15,23,28-31 * 0,6 S’executara cada dos hores els dies 1 al 15,el 23, 28, 29, 30 i 31 de tots els mesos però només quan siguen dissabte o diumenge.
  
 +
<br> Sabent açò, ara podrem aconseguir que els nostres backups s’executen de manera automàtica. Després de teclejar crontab -e afegirem les següents esbosses.
  
Sabent açò, ara podrem aconseguir que els nostres backups s’executen de manera automàtica.
+
0 1 * * 0 instrucción_lunes  
Després de teclejar crontab -e afegirem les següents esbosses.
 
 
 
0 1 * * 0 instrucción_lunes
 
 
 
0 1 * * 1 instrucción_martes
 
 
 
0 1 * * 2 instrucción_miercoles
 
 
 
0 1 * * 3 instrucción_jueves
 
  
0 1 * * 4 instrucción_viernes
+
0 1 * * 1 instrucción_martes
  
0 1 * * 5 instrucción_sabado
+
0 1 * * 2 instrucción_miercoles
  
0 1 * * 6 instrucción_domingo
+
0 1 * * 3 instrucción_jueves
  
 +
0 1 * * 4 instrucción_viernes
  
Amb açò aconseguirem que s’execute cada dia a les 01:00 hores les instruccions indicades. Podem substituir “instrucció_******” per l’orde rsync dalt descrita.
+
0 1 * * 5 instrucción_sabado
De totes maneres ho farem un pèl més complet, crearem un script per a cada dia de la setmana, a més arreplegarem un log.
 
Començarem creant els directoris necessaris.
 
  
mkdir ~/.crono_bak
+
0 1 * * 6 instrucción_domingo
  
cd ~/.crono_bak
+
<br> Amb açò aconseguirem que s’execute cada dia a les 01:00 hores les instruccions indicades. Podem substituir “instrucció_******” per l’orde rsync dalt descrita. De totes maneres ho farem un pèl més complet, crearem un script per a cada dia de la setmana, a més arreplegarem un log. Començarem creant els directoris necessaris.  
  
Dins del directori que acabem de crear, crearem set fitxers mes cridats lunes.sh, martes.sh, ..., domingo.sh i en el seu interior posarem el següent.
+
mkdir ~/.crono_bak
  
!/bin/bash
+
cd ~/.crono_bak
  
pathLog="/media/sdb5/backup/logLunes.log"
+
Dins del directori que acabem de crear, crearem set fitxers mes cridats lunes.sh, martes.sh, ..., domingo.sh i en el seu interior posarem el següent.  
  
echo ----------------------------------------------------------------------- >> $pathLog
+
!/bin/bash
  
echo ---INICI COPIA SEGURETAT LUNES >> $pathLog
+
pathLog="/media/sdb5/backup/logLunes.log"
  
date >> $pathLog
+
echo ----------------------------------------------------------------------- &gt;&gt; $pathLog  
  
echo ----------------------------------------------------------------------- >> $pathLog
+
echo ---INICI COPIA SEGURETAT LUNES &gt;&gt; $pathLog  
  
echo -- Iniciem Sincronització directori /home/monti >> $pathLog
+
date &gt;&gt; $pathLog  
  
rsync -altgvb /home/monti /media/sdb5/backup/sistema/lunes >> $pathLog
+
echo ----------------------------------------------------------------------- &gt;&gt; $pathLog  
  
echo ----------------------------------------------------------------------- >> $pathLog
+
echo -- Iniciem Sincronització directori /home/monti &gt;&gt; $pathLog  
  
echo -- Sincronització Finalitzada >> $pathLog
+
rsync -altgvb /home/monti /media/sdb5/backup/sistema/lunes &gt;&gt; $pathLog  
  
date >> $pathLog
+
echo ----------------------------------------------------------------------- &gt;&gt; $pathLog  
  
echo ----------------------------------------------------------------------- >> $pathLog
+
echo -- Sincronització Finalitzada &gt;&gt; $pathLog  
  
 +
date &gt;&gt; $pathLog
  
Este codi és el que correspon al script del dilluns, per als altres sis farem el mateix però substituint Dilluns pel dia de la setmana concret.
+
echo ----------------------------------------------------------------------- &gt;&gt; $pathLog
El script executa la instrucció rsync, la resta de les esbosses el que fan és generar un fitxer log.
 
Una vegada creats els set fitxers, haurem de donar-los permís per a poder executar-los.
 
  
chmod +x *.sh
+
<br> Este codi és el que correspon al script del dilluns, per als altres sis farem el mateix però substituint Dilluns pel dia de la setmana concret. El script executa la instrucció rsync, la resta de les esbosses el que fan és generar un fitxer log. Una vegada creats els set fitxers, haurem de donar-los permís per a poder executar-los.  
  
Perquè s’execute tots els dies a l’1 del matí, el nostre crontab quedarà així.
+
chmod +x *.sh
  
m h dom mon dow command
+
Perquè s’execute tots els dies a l’1 del matí, el nostre crontab quedarà així.
  
0 1 * * 1 /home/banyut/.crono_back/lunes.sh >>/media/sdb5/backup/logcrono.log
+
m h dom mon dow command
  
0 1 * * 2 /home/banyut/.crono_back/martes.sh >>/media/sdb5/backup/logcrono.log
+
0 1 * * 1 /home/banyut/.crono_back/lunes.sh &gt;&gt;/media/sdb5/backup/logcrono.log  
  
0 1 * * 3 /home/banyut/.crono_back/miercoles.sh >>/media/sdb5/backup/logcrono.log
+
0 1 * * 2 /home/banyut/.crono_back/martes.sh &gt;&gt;/media/sdb5/backup/logcrono.log  
  
0 1 * * 4 /home/banyut/.crono_back/jueves.sh >>/media/sdb5/backup/logcrono.log
+
0 1 * * 3 /home/banyut/.crono_back/miercoles.sh &gt;&gt;/media/sdb5/backup/logcrono.log  
  
0 1 * * 5 /home/banyut/.crono_back/viernes.sh >>/media/sdb5/backup/logcrono.log
+
0 1 * * 4 /home/banyut/.crono_back/jueves.sh &gt;&gt;/media/sdb5/backup/logcrono.log  
  
0 1 * * 6 /home/banyut/.crono_back/sabado.sh >>/media/sdb5/backup/logcrono.log
+
0 1 * * 5 /home/banyut/.crono_back/viernes.sh &gt;&gt;/media/sdb5/backup/logcrono.log  
  
0 1 * * 0 /home/banyut/.crono_back/domingo.sh >>/media/sdb5/backup/logcrono.log
+
0 1 * * 6 /home/banyut/.crono_back/sabado.sh &gt;&gt;/media/sdb5/backup/logcrono.log  
  
 +
0 1 * * 0 /home/banyut/.crono_back/domingo.sh &gt;&gt;/media/sdb5/backup/logcrono.log
  
La ruta /mitjana/sdb5/backup/sistema/ ha d’existir i en el seu interior ha d’haver-hi 7 directoris cridats dilluns, dimarts, etc.
+
<br> La ruta /mitjana/sdb5/backup/sistema/ ha d’existir i en el seu interior ha d’haver-hi 7 directoris cridats dilluns, dimarts, etc. Per a poder revisar la nostra programació executarem:  
Per a poder revisar la nostra programació executarem:
 
  
crontab -l
+
crontab -l  
  
He donat per fet que el dimoni cron esta activat, per a comprovar açò podem executar.
+
He donat per fet que el dimoni cron esta activat, per a comprovar açò podem executar.  
  
ps -ef | grep crontab
+
ps -ef | grep crontab  
  
En cas que no este en marxa ho iniciarem de la manera següent
+
En cas que no este en marxa ho iniciarem de la manera següent  
  
sudo /etc/init.d/cron start
+
sudo /etc/init.d/cron start  
  
Finalment per a veure si s’ha executat bé podem mirar el log que hem creat en /mitja/sdb5/backup/logcrono.log podem mirar els logs del dia en concret dins de la carpeta /mitjana/sdb5/backup/*****.log,també podem veure quan s’ha executat el nostre crontab consultant el log del sistema.
+
Finalment per a veure si s’ha executat bé podem mirar el log que hem creat en /mitja/sdb5/backup/logcrono.log podem mirar els logs del dia en concret dins de la carpeta /mitjana/sdb5/backup/*****.log,també podem veure quan s’ha executat el nostre crontab consultant el log del sistema.  
  
 
cat /var/log/syslog |grep crontab
 
cat /var/log/syslog |grep crontab

Revisió del 18:51, 14 feb 2011

http://img696.imageshack.us/i/16793980.jpg/ <img src="vaca.jpg" alt="descripción" />

L’objectiu d'aquest article és muntar backups de fitxers i directoris automics. visca el barça som els putos amus vale!! [modifica] Backup de directoris i fitxers 11-0 del año 1xxx

loca loca loca didac Es tracta de fer un backup de tots els arxius del nostre usuari. Mantindrem un històric de backups, farem una còpia diària (dilluns, dimarts, dimecres, etc .), cada dilluns substituirem la còpia del dilluns anterior i així amb tots els dies.


El procediment és senzill, triarem els directoris i fitxers de què volem fer el backup, i els copiarem.

cp -rp ~/banyut /media/sdb5/backup/domingo


És totalment funcional, però la veritat és que no és eficient, el problema està en que cada dilluns ens farà una còpia completa de tots els arxius que tenim en el directori, quan el que seria desitjable és que només copiara els modificats o els creats des de l’últim backup.


No hi ha problema, tenim una altra instrucció que ens oferix esta funcionalitat.

rsync -altgvbp /home/banyut /media/sdb5/backup/domingo


El següent pas és que estes es realitzen de manera automàtica, per a això utilitzarem una altra instrucció que ens oferix el sistema crontab. Crontab ens permet executar aplicacions en un moment determinat, una única vegada o de manera recurrent. En un principi pot paréixer quelcom embolicadora però en realitat és molt fàcil d’usar.

crontab -e


Esta instrucció ens permet editar l’arxiu /etc/crontab, en el que programarem les instruccions que volem executar. Cada esbossa d’este arxiu esta formada per 7 columnes

Minutos (de 0 a 59

Horas (de 0 a 23)

Dia (de 1 a 31)

Mes (de 1 a 12)

Dia de la semana (de 0 a 7, donde 0 o 7 es domingo)

usuario (opcional)

orden a ejecutar


Un asterisc en qualsevol de les primeres 5 columnes indica tots, és a dir si volem que quelcom s’execute tots els mesos en la columna del mes podrem un asterisc. En realitat és un poc mas complex però de moment ja ens val així. Com funcionen estes columnes.

    5 * * * * se ejecutara el minuto 5 de cada hora todos los días.
    0 2 * * * a las 2:00H en punto cada día.
    0 2 * * 0 a las 2:00h todos los domingos del año.
    * 5 * * 1 todos los minutos de las 5:00 a 5:59 de todos los lunes.
    2 * 10 4 * el minuto dos de cada hora el dia 10 de abril de cada año.
    0 3 * * 6 a las 03:00 horas de todos los sábados


En cada una d’estes columnes podem posar més d’un valor, o inclús un rang, açò es fa separant cada valor per mitjà d’una coma o un rang per mitjà d’un guió. Així en la columna dia de la setmana podem posar 1,3,5 que indicara que s’execute els dilluns, dimecres i divendres. O en la columna mes per a indicar la primera quinzena podem posar 1-15. Açò encara podem complicar-ho un pèl més, tenim una altra operació el símbol “/”, que indica un increment, per exemple, si en la columna minuts posem */15 s’executarà cada 15 minuts, o si en la columna dies posem 1-10/2, s’executarà els dies 1,3,5,7 i 9.

Finalment un exemple més complex.

    0 */2 1-15,23,28-31 * 0,6 S’executara cada dos hores els dies 1 al 15,el 23, 28, 29, 30 i 31 de tots els mesos però només quan siguen dissabte o diumenge.


Sabent açò, ara podrem aconseguir que els nostres backups s’executen de manera automàtica. Després de teclejar crontab -e afegirem les següents esbosses.

0 1 * * 0 instrucción_lunes

0 1 * * 1 instrucción_martes

0 1 * * 2 instrucción_miercoles

0 1 * * 3 instrucción_jueves

0 1 * * 4 instrucción_viernes

0 1 * * 5 instrucción_sabado

0 1 * * 6 instrucción_domingo


Amb açò aconseguirem que s’execute cada dia a les 01:00 hores les instruccions indicades. Podem substituir “instrucció_******” per l’orde rsync dalt descrita. De totes maneres ho farem un pèl més complet, crearem un script per a cada dia de la setmana, a més arreplegarem un log. Començarem creant els directoris necessaris.

mkdir ~/.crono_bak

cd ~/.crono_bak

Dins del directori que acabem de crear, crearem set fitxers mes cridats lunes.sh, martes.sh, ..., domingo.sh i en el seu interior posarem el següent.

!/bin/bash

pathLog="/media/sdb5/backup/logLunes.log"

echo ----------------------------------------------------------------------- >> $pathLog

echo ---INICI COPIA SEGURETAT LUNES >> $pathLog

date >> $pathLog

echo ----------------------------------------------------------------------- >> $pathLog

echo -- Iniciem Sincronització directori /home/monti >> $pathLog

rsync -altgvb /home/monti /media/sdb5/backup/sistema/lunes >> $pathLog

echo ----------------------------------------------------------------------- >> $pathLog

echo -- Sincronització Finalitzada >> $pathLog

date >> $pathLog

echo ----------------------------------------------------------------------- >> $pathLog


Este codi és el que correspon al script del dilluns, per als altres sis farem el mateix però substituint Dilluns pel dia de la setmana concret. El script executa la instrucció rsync, la resta de les esbosses el que fan és generar un fitxer log. Una vegada creats els set fitxers, haurem de donar-los permís per a poder executar-los.

chmod +x *.sh

Perquè s’execute tots els dies a l’1 del matí, el nostre crontab quedarà així.

m h dom mon dow command

0 1 * * 1 /home/banyut/.crono_back/lunes.sh >>/media/sdb5/backup/logcrono.log

0 1 * * 2 /home/banyut/.crono_back/martes.sh >>/media/sdb5/backup/logcrono.log

0 1 * * 3 /home/banyut/.crono_back/miercoles.sh >>/media/sdb5/backup/logcrono.log

0 1 * * 4 /home/banyut/.crono_back/jueves.sh >>/media/sdb5/backup/logcrono.log

0 1 * * 5 /home/banyut/.crono_back/viernes.sh >>/media/sdb5/backup/logcrono.log

0 1 * * 6 /home/banyut/.crono_back/sabado.sh >>/media/sdb5/backup/logcrono.log

0 1 * * 0 /home/banyut/.crono_back/domingo.sh >>/media/sdb5/backup/logcrono.log


La ruta /mitjana/sdb5/backup/sistema/ ha d’existir i en el seu interior ha d’haver-hi 7 directoris cridats dilluns, dimarts, etc. Per a poder revisar la nostra programació executarem:

crontab -l

He donat per fet que el dimoni cron esta activat, per a comprovar açò podem executar.

ps -ef | grep crontab

En cas que no este en marxa ho iniciarem de la manera següent

sudo /etc/init.d/cron start

Finalment per a veure si s’ha executat bé podem mirar el log que hem creat en /mitja/sdb5/backup/logcrono.log podem mirar els logs del dia en concret dins de la carpeta /mitjana/sdb5/backup/*****.log,també podem veure quan s’ha executat el nostre crontab consultant el log del sistema.

cat /var/log/syslog |grep crontab