Backup BD Postgres Automatizado
Viernes, 10 de Abril 2009
Esta vez, trataré de explicar como realizar respaldos de sus BD de forma automática, por medio de crontab en linux.
La forma de obtener un respaldo de una BD en postgres es:
pg_dump -U usuario -d basededatos > archivo.sql
Creamos un script bash para respaldar nuestra BD postgres, llamado backup.sh, ubicado en /home/pgallegos/
#!/bin/bash FECHA=`date +'%Y%m%d'` DIR_BACKUP="/home/pgallegos/backup_bd" pg_dump -U pgallegos -d bdatos > $DIR_BACKUP/BACKUP_$FECHA.sql
Se podría también guardar los respaldos comprimidos, para que no ocupen mucho espacio en disco.
agregando un par de líneas al final del script:
cd $DIR_BACKUP gzip BACKUP_$FECHA.sql
Y finalmente debemos crear una tarea en el crontab.
Si desean editar el crontan con vi, deben realizar lo siguiente:
export EDITOR=vi
Para ver las tareas del crontab, se debe ejecutar:
crontab -l
Para agregar o editar una tarea, se debe ejecutar:
crontab -e
El ejemplo siguiente, ejecuta el script todos los días a la 1:00 am.
0 1 * * * /home/pgallegos/backup.sh
Para ejecutar el script por ejemplo todos los días lunes a las 00:00 hrs, se debe agregar la siguiente línea al crontab.
0 0 * * 1 /home/pgallegos/backup.sh
El ejemplo anterior, debería funcionar para cualquier BD, como mysql u oracle.
En algunos casos (en oracle por ej) se deberán setear las variables de ambiente de la BD dentro del script bash con el comando export.
Eso sería por ahora.
sql> exit;
Bug en comando date Linux
Jueves, 19 de Marzo 2009
Esta vez contaré como descubrí un bug en el comando date de linux
Bueno, primero que todo (o primero que nada? , da lo mismo, es mi blog y escribo como quiero xD)
explicaré brevemente el uso del comando date de linux.
El comando date nos sirve para desplegar la hora y fecha actual, además como usuario root o sudo se puede modificar la fecha del sistema. También se puede sumar o restar dias a una fecha determinada.
Algunos ejemplos de uso del comando date:
Despliega la fecha y hora actual:
$ date jue mar 19 01:11:58 CLT 2009
Despliega la fecha y hora actual con un formato determinado:
$ date +'%d/%m/%Y %H:%M:%S' 19/03/2009 01:11:58
Resta dos dias a la fecha actual y despliega con un formato determinado:
$ date --date='-2 day' +'%d/%m/%Y %H:%M:%S' 17/03/2009 01:11:58
Suma un mes a una fecha dada (13/01/2009 a las 14:00:00 para el ejemplo) y la despliega con un formato determinado:
$ date --date='+1 month 2009-01-13 14:00:00' +'%d/%m/%Y %H:%M:%S' 13/02/2009 14:00:00
Con el comando date, se pueden sumar o restar segundos, minutos, dias, semanas, meses, años.
Ahora que ya conocemos un poco más el uso del comando date, voy a contar de que se trata el bug que encontré para este comando.
Intentemos sumar una hora a la fecha 01/01/2009 a las 20 horas. Esto nos deberia dar las 21 horas del dia 01/01/2009.
Seria de la siguiente forma:
$ date --date='+1 hour 2009-01-01 20' +'%d/%m/%Y %H:%M:%S' 01/01/2009 21:00:00
Todo bien.
Ahora intenten sumar una hora a la fecha 14/03/2009 a las 23 horas, nos deberia dar las 00 horas del dia 15/03/2009.
Seria de la siguiente forma:
$ date --date='+1 hour 2009-03-14 23' +'%d/%m/%Y %H:%M:%S' 14/03/2009 23:00:00
Sorpresa! No le sumó la hora a la fecha, ¿que sucede?
Después de estar harto rato probando y probando como loco, sumando horas, minutos, dias, etc, ya casi seguro de que el linux me estaba agarrando para el webeo :p, pudimos detectar el porque (con algunos compañeros de trabajo).
Esto ocurre ya que justo ese día es el cambio de hora de verano (solo para algunos paises), donde linux tiene programado restar una hora a las 00:00:00, entonces el sistema se vuelve loco.
Este comando lo ejecuté en las siguientes distribuciones linux: centos, redhat, ubuntu, debian, y en todas ellas ocurrió lo mismo. Por otro lado lo ejecuté en 2 maquinas Solaris y ahí si suma la hora y me devuelve la fecha del 15/03/2009 a las 00:00:00.
$ date --date='+1 hour 2009-03-14 23' +'%d/%m/%Y %H:%M:%S' 15/03/2009 00:00:00
Pero después pensando un poco (a veces lo hago :p).
Apliqué su famoso:
$ man date
Me fijé que existe el parámetro -u para el comando date, que significa tiempo universal, el cual no toma en cuenta la fecha y hora local del pais, sino que la universal.
Conclusión:
Cuando usen el comando date, sobretodo cuando vayan a sumar y/o restar tiempo a fechas, usen el parámetro -u.
Ese sería mi aporte por ahora.
Agradezco a los que cooperaron con este tema, ya que no me puedo quedar con todo el crédito yo solo, ya que para detectar el porque y las soluciones del bug (no se si sea un bug en realidad, pero suena importante y además NERD llamarlo así xD) me ayudaron algunos compañeros de trabajo, para que no se sientan si es que leen esto jeje.
Adiós =)
Á
Pausa en Prison Break
Martes, 30 de Diciembre 2008
Bueno, estos gringos rqs, nos tienen acostumbrados a esas pausas en las series, cuando estan en lo mejor de lo mejor.
Esta vez, le toca a prison break, mi serie favorita.
El ultimo capitulo emitido fue el capitulo 16: The Sunshine State, donde pasaron cosas muy importantes e interesantes. El capitulo 17, se emitira en primavera de USA. Eso es mas o menos hasta marzo del 2009
Aca dejo una promo para no quedar tan picado.
bye
Matar proceso en linux Automatizado
Jueves, 11 de Diciembre 2008
Bueno, hace rato que no posteo algo productivo, así que esta vez daré algunos tips muy utiles, para finalmente mostrarles un script en perl, el cual sirve para matar procesos en linux.
Supongamos que queremos matar un proceso llamado proceso.pl, entonces deberíamos primero ejecutar el siguiente comando:
$ ps -fea | grep proceso.pl 501 2374 2333 0 22:57 pts/10 00:00:00 perl proceso.pl 501 2377 2297 0 22:57 pts/9 00:00:00 grep proceso.pl
Se pueden apreciar dos procesos, el que queremos matar y además la linea de comando que ejecutamos anteriormente.
Para mejorar un poco el comando, ejecutamos lo siguiente:
$ ps -fea | grep proceso.pl | grep -v grep 501 2374 2333 0 22:57 pts/10 00:00:00 perl proceso.pl
Con eso, ya tenemos el proceso que queremos matar, entonces lo normal que uno hace, es ejecutar un kill -9 y el id del proceso a matar (el nro de la segunda columna), como se muestra a continuacion:
$ kill -9 2374
Con eso ya hemos matado el proceso.
Pero existe un comando muy simpático, llamado awk, el cual nos puede facilitar bastante muchas tareas.
Mi idea no es profundizar en el uso de este comando, para eso está: man awk, o googlear xD
Vamos por pasos.
$ ps -fea | grep proceso.pl | grep -v grep | awk '{print $2}'
2374
Con lo anterior hemos imprimido el id del proceso que queremos matar, facil no?
Ahora lo arreglamos un poquito y tenemos justo el comando que mata el proceso en cuestión:
$ ps -fea | grep proceso.pl | grep -v grep | awk '{print "kill -9 "$2}'
kill -9 2374
Ahora que tenemos el comando, como lo ejecutamos?, pues de la siguiente manera:
$ ps -fea | grep proceso.pl | grep -v grep | awk '{print "kill -9 "$2}' | sh
Listo, eso es algo de lo que se puede hacer con nuestro comando awk
Finalmente, quize automatizar un poco mas esta manera de matar procesos, y se me ocurrió hacer un script en perl, el cual recibe como parámetro el nombre del script a matar, usando claro el comando awk. El script sirve para matar uno o más procesos.
Cabe destacar que también se podría hacer el script (incluso en otro lenguaje como bash, etc) sin el uso de awk, pero la idea era mostrar el uso de dicho comando.
Bueno, finalmente les muestro el script hecho en perl, el cual podría necesitar de muchas mejoras, así que estoy abierto a cualquier duda, comentario y/o sugerencia.
Dejo el script para descargar: killProcess.pl, ya que al copiar y pegar salen algunos caracteres raros.
Otro tip antes de irme.
Yo en mi linux, tengo en mi archivo .bashrc un alias para mi script perl =), de la siguiente manera:
alias kp='directorio_del_script/killProcess.pl'
Y después se invoca el script, de la siguiente manera:
kp proceso_a_matar
Bueno, eso sería todo.
print “bye =)”;
exit;
Baile Familiar xD
Sábado, 06 de Diciembre 2008
Encontre muy buena esta pagina, donde se puede hacer un video muy chistoso, con un maximo de 5 personas.
Pongan play si quieren ver el resultado =)
La pagina es:
http://www.elfyourself.com
Mis 10 comandos mas utilizados en Linux
Domingo, 09 de Noviembre 2008
Estos son los comandos que mas uso en la pega
144 cd
98 ls
39 ssh
37 exit
33 ps
31 vi
27 sudo
21 mv
19 scp
14 grep
Para saber los 10 comandos mas utilizados en linux, se debe ejecutar la siguiente linea en la consola:
history|awk '{print $2}'|awk 'BEGIN {FS="|"} {print $1}'|sort|uniq -c|sort -rn|head -10
El comando anterior, lo que hace es extraer información del historial, filtrarlo y ordenarlo por medio del comando awk, el cual es muy potente y se pueden hacer cosas muy simpaticas ![]()
Fuente
Luna =)
Miércoles, 06 de Agosto 2008
Esta es mi perra Luna.
Subo unas fotitos para que las vea mi familia =)
Además así pruebo el efecto lightbox, que está bastante decente XD
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Backup Bases de Datos
Viernes, 01 de Agosto 2008
Hoy en dia existen infinidad de herramientas gráficas para administrar nuestras bases de datos, como por ejemplo: MySQL Administrator, phpMyAdmin (MySQL), pgAdmin III, phpPgAdmin (PostgreSQL), SQL Developer, TOAD (Oracle).
Pero hay casos en los cuales dichas herramientas no nos sirven para respaldar y restaurar nuestras bases de datos, por ejemplo cuando administramos nuestras bases de datos remotamente y generalmente no contamos con un entorno gráfico, es entonces cuando debemos recurrir a la administración de la BD por linea de comandos.
A continuación muestro un pequeño resumen de los comandos para respaldar y restaurar las BD mas conocidas, o por lo menos las que yo mas uso

Respaldar
mysqldump -B basededatos -uusuario -ppassword > archivo.sql
Restaurar
mysql -u usuario -ppassword basededatos< archivo.sql
Para ver una descripción completa del uso de parámetros:
- man mysqldump
- man mysql

Respaldar
pg_dump -U usuario -d basededatos > archivo.sql
Restaurar
psql -U usuario -d basededatos -f archivo.sql
Para ver una descripción completa del uso de parámetros:
- man pg_dump
- man psql

Respaldar
exp usuario/password@SID FILE=archivo.dmp log=archivo.log full=y
Restaurar
imp usuario/password@SID FILE=archivo.dmp log=archivo.log full=y
Para ver una descripción completa del uso de parámetros:
- man exp
- man imp
- exp help=y
- imp help=y
Ese sería mi humilde aporte
Prison Break
Sábado, 26 de Julio 2008

Bueno, los que me conocen, saben que esta es mi serie favorita y no me he perdido ningún capítulo.
Yo siempre bajo esta serie de una de mis páginas favoritas www.chilewarez.cl
Pronto, entre agosto y septiembre se viene la 4ta temporada de Prison Break, y según he leido, se viene una gran sorpresa, aunque no está confirmado, pero no pienso contársela para no embarrarles la serie XD.
La dra tancredi no está muerta. XD
Y aquí la promo de la 4ta temporada:
Ese sería mi aporte.
bye
Algunos Comandos Utiles Linux
Jueves, 24 de Julio 2008
A continuación muestro algunos comandos útiles para linux:
muestra el número de lineas de un archivo
$ wc -l archivo
muestra tamaño de un directorio (incluyendo subdirectorios y archivos contenidos)
$ du -s -h directorio
muestra particiones linux, además de espacio utilizado y disponible
$ df -h
busca los archivos que contienen una cadena (string) en un directorio especificado
$ find directorio -type f | xargs grep "cadena"
Bueno, eso por ahora, ya que tengo sueño
Como conclusión puedo decir que: el nano es como el pico XD
Mejor usen el editor VI
mas adelante publicaré mas cosillas.
bye












