Jul 25

Mas bien el titulo deberia de ser borrar archivos que tienen en su nombre la fecha de dos dias atras con un formato específico jaja, pero era demasiado largo.

Tenemos un cron que genera diarmente un respaldo de archivos de la base de datos, solo que el directorio donde se hacen es limitado, por lo tanto es necesario antes de generar el nuevo respaldo, borrar el de 2 dias antes, pero hay que dejar el del dia pasado.

De este respaldo se generan varios archivos, los cuales en el nombre del archivo contienen la fecha de creacion con un formato de AAAAMMDDnombre.bak .

por lo tanto en este momento existen en el directorio los siguientes archivos:

20070723archivo1.bak

20070723archivo2.bak

20070724archivo1.bak

20070724archivo1.bak

y hoy se generarán los archivos

20070725archivo1.bak

20070725archivo1.bak

mi primera idea fue hacer un simple

find . -mtime 2 -exec rm -rf {} \;

ok desmenusando

find, comando basico y poderoso ;) de busqueda en el entorno unix

el “.” es para decirle que busque de este directorio y sus subdirectorios correspoendientes.

-mtime “fecha de modificacion”

2 (exactamente 2 dias), si usamos -2 seria que tuvieran 2 o menos dias de modificados y si usamos +2 serían los archivos que tuvieran 2 o mas dias de modificados.

-exec ejecutar un comando

rm -rf borrar el archivo . Cuando usamos la clausual -exec tenemos que poner {} \;

Bueno pues hasta ahi parecía que todo funcionaba solo que como el cron corre a la media noche la fecha (12:00) y el archivo se termina de crear a las 12:05, al ejecutar el comando no me borra los archivos del dia 23 porque a las 12:00 los archivos no han cumplido exactamente los 2 dias de modificados, explicandolo mejor

archivo                                 fecha y hora de creacion

20070723archivo1.bak           23 Julio 2007 12:05 AM

20070723archivo2.bak           23 Julio 2007 12:10 AM

20070724archivo1.bak           24Julio 2007 12:05 AM

20070724archivo1.bak           24Julio 2007 12:10 AM

asi que a las 12:00 del dia 25 los archivos del dia 23 aun no cumplen los 2 dias, entonces la línea que necesito sería:

find . -name ‘*20070723*’ -exec rm -rf {} \;

correcto? pero como hago que esto sea dinamico pues con un script asi:

#!/bin/ksh
echo “find . -name ‘*\c”  > borra.sh
date ‘+%y:%m:%d’ | awk -F”:” ‘{printf”20%2d%2d%2d\n”,$1,$2,($3-2)}’ | sed ’s/ /0/g’ | tr -d ‘\n’ >> borra.sh
echo “*’ -exec rm -rf {} \;” >> borra.sh
chmod u+x borra.sh
./borra.sh

y que hace??

la primera línea escribe en el archivo borra.sh lo siguiente “find . -name ‘*”, el \c es para que no de el salto de línea (como se puede ser este script es para el ksh, con el bash puedes poner echo -n y no tendrias que poner el \c) 

la segunda línea saca la fecha de hoy y al formatearla le resta los 2 dias ($3-2) de acuerdo a lo que necesito AAAAMMDD, el tr -d es tambien para evitar el salto de línea, y lo agrega al archivo borra.sh

la tercer línea completa el find con “*’” , el exec y el rm lo explique arriba, y tambien lo agrega al archivo borra.sh

se le dan permisos de ejecution al archivo borra.sh

y finalmente se ejecuta.

si le dieramos un more o un cat al archivo borra.sh contendría: 

find . -name ‘*20070723*’ -exec rm -rf {} \;

con esto el día de hoy se borrarían los archivos del dia 23, sin importar la hora en la que fueron creados.

No es la única forma de hacerlo es la que a mi se me ocurrió

referencias útiles:

dale un man al find jeje

y estas dos ligas

http://csdir.org/tutorials/bash-tutorial/
http://www.wagoneers.com/UNIX/FIND/find-usage.html
Cualquier comentario es bienvenido.  :)

Jul 25

Después de tres años viviendo en Leon, Gto, mismo tiempo que labore en proservicio/serviacero se me presentó una oportunidad laboral que no pude rechazar, la empresa softtek en Aguascalientes, Ags.

La salida de proservicio fue tranquila sin percances ni nada que lamentar y muy amena, a casi un mes de un nuevo empleo, y de regreso a la ciudad que tanto adoro, puedo ver las cosas con un mejor horizonte ya que si alguno de ustedes ha cambiado de empleo/ciudad sabrá que al principio estas algo desubicado.

Puedo pensar tranquilamente que por el momento quedaron atras los dias donde fui ERP ADMIN/SUPPORT-UNIX ADMIN-DBA-DEV ELO PER. Para enfocarmen unicamente al trabajo de DBA, será malo especializarme? aun no lo sé solo el tiempo lo dirá.

Jul 25

perdi mi pass y no podia entrar a mi propio blog

Apr 25

Es raro como pasa la vida, pero eso de que da muchas vueltas es una realidad, parece mentira como un día puedes sentirte tranquilo, feliz, y al dia siguiente o incluso el mismo dia sentirte triste.

En estos momentos, estoy atravesando una situación algo difícil para mi, aunque no entraré en detalles basta decir que la tristeza me invade por algo que aunque tiene solución, ésta no depende únicamente de mi.

El asimilar y enfrentar los problemas no es facil, “nadie quiere sufrir”, pero creo que es parte de la vida, y el enfrentarlos traerá consigo madurez y sabiduría.

Es necesario aprender de los errores para no volver a crear o tener que enfrentar una situación similar. ¿Será verdad eso de que no es mas fuerte el que no cae sino el que cae y se levanta?. Aunque lo creo tengo mis dudas.

Incluso en momentos como estos considero que mis problemas podrian considerarse sencillos o si los comparo con los problemas de otra gente podrias ser insignificantes pero creo que dependiendo de la situación se dimensionan los problemas de acuerdo a lo vivido.

He escuchado muchisimas palabras de aliento de algunas personas y muchas frases que me han dicho se me quedan en la mente:

  • Tiempo al tiempo
  • El tiempo te dará la razón
  • No te desgastes queriendo entender las cosas, a veces solo hay que actuar, las explicaciones vendrán cuando estes mas sereno, verás que saldrán de tu interior.

y por último copio y pego un pequeño texto para reflexionar (gracias IX):

“Hubo una vez un rey que dijo a los sabios de la corte:
- Me estoy fabricando un precioso anillo. He conseguido uno de los mejores diamantes posibles. Quiero guardar oculto dentro del anillo algún mensaje que pueda ayudarme en momentos de desesperación total, y que ayude a mis herederos, y a los herederos de mis herederos, para siempre. Tiene que ser un mensaje pequeño, de manera que quepa debajo del diamante del anillo.
Todos quienes escucharon eran sabios, grandes eruditos; podrían haber escrito grandes tratados, pero darle un mensaje de no más de dos o tres palabras que le pudieran ayudar en momentos de desesperación total…
Pensaron, buscaron en sus libros, pero no podían encontrar nada.

El rey tenía un anciano sirviente que también había sido sirviente de su padre. La madre del rey murió pronto y este sirviente cuidó de él, por tanto, lo trataba como si fuera de la familia. El rey sentía un inmenso respeto por el anciano, de modo que también lo consultó. Y éste le dijo:

-No soy un sabio, ni un erudito, ni un académico, pero conozco el mensaje. Durante mi larga vida en palacio, me he encontrado con todo tipo de gente, y en una ocasión me encontré con un místico. Era invitado de tu padre y yo estuve a su servicio. Cuando se iba, como gesto de agradecimiento, me dio este mensaje –el anciano lo escribió en un diminuto papel, lo dobló y se lo dio al rey-. Pero no lo leas –le dijo- manténlo escondido en el anillo. Abrelo sólo cuando todo lo demás haya fracasado, cuando no encuentres salida a la situación-

Ese momento no tardó en llegar. El país fue invadido y el rey perdió el reino. Estaba huyendo en su caballo para salvar la vida y sus enemigos lo perseguían. Estaba solo y los perseguidores eran numerosos. Llegó a un lugar donde el camino se acababa, no había salida: enfrente había un precipicio y un profundo valle; caer por él sería el fin. Y no podía volver porque el enemigo le cerraba el camino. Ya podía escuchar el trotar de los caballos. No podía seguir hacia delante y no había ningún otro camino…

De repente, se acordó del anillo. Lo abrió, sacó el papel y allí encontró un pequeño mensaje tremendamente valioso:
Simplemente decía “ESTO TAMBIEN PASARA”.

Mientras leía “esto también pasará” sintió que se cernía sobre él un gran silencio. Los enemigos que le perseguían debían haberse perdido en el bosque, o debían haberse equivocado de camino, pero lo cierto es que poco a poco dejó de escuchar el trote de los caballos.

El rey se sentía profundamente agradecido al sirviente y al místico desconocido. Aquellas palabras habían resultado milagrosas. Dobló el papel, volvió a ponerlo en el anillo, reunió a sus ejércitos y reconquistó el reino. Y el día que entraba de nuevo victorioso en la capital hubo una gran celebración con música, bailes… y él se sentía muy orgulloso de sí mismo.

El anciano estaba a su lado en el carro y le dijo:

-Este momento también es adecuado: vuelve a mirar el mensaje.

-¿Qué quieres decir? –preguntó el rey-. Ahora estoy victorioso, la gente celebra mi vuelta, no estoy desesperado, no me encuentro en una situación sin salida.

-Escucha –dijo el anciano-: este mensaje no es sólo para situaciones desesperadas; también es para situaciones placenteras. No es sólo para cuando estás derrotado; también es para cuando te sientes victorioso. No es sólo para cuando eres el último; también es para cuando eres el primero.

El rey abrió el anillo y leyó el mensaje: “Esto también pasará”, y nuevamente sintió la misma paz, el mismo silencio, en medio de la muchedumbre que celebraba y bailaba, pero el orgullo, el ego, había desaparecido. El rey pudo terminar de comprender el mensaje. Se había iluminado.

Entonces el anciano le dijo:

-Recuerda que todo pasa. Ninguna cosa ni ninguna emoción son permanentes. Como el día y la noche, hay momentos de alegría y momentos de tristeza. Acéptalos como parte de la dualidad de la naturaleza porque son la naturaleza misma de las cosas.”

Un saludo, gracias por detenerte a leer, y sientete libre de dejar un msg.

Feb 03

En este post trataré de explicar brevemente la instalación y uso del cvs.

como en otros post’s no explicare lo que es el cvs. puedes googlear.

Lo primero bajarse el CVS, existen varias maneras de hacerlo  en este caso usaré sunfreeware, (ya que estoy usando solaris 9).

#uname -a

SunOS  5.9 Generic_118558-38 sun4u sparc SUNW,Sun-Fire-V240
una vez obenido el paquete.

#cd /tmp

#gunzip cvs-1.11.22-sol9-sparc-local.gz

#pkgadd -d cvs-1.11.22-sol9-sparc-local

lixto , ya lo tenemos instaldo ahora la configuracion.

1. Establecer las variables de ambiente

poner las variable de ambiente CVSROOT
export CVSROOT=path_donde_estara_el_repositorio_de_cvs

en mi caso lo hare en mi /home/cvsroot

#export CVSROOT=/home/cvsroot

#mkdir /home/cvsroot/CVSROOT

iniciamos el repsitorio con

#cvs -d cvsroot init

ok ahora hay que crear el repsitorio para nuestro proyecto

cvs import -m “Comentario” nombre_directorio_que_se_creara directorio_que_contiene_los_programas_fuentes start

#cvs import -m “Sources” sources/xxsrc xxsrc start

asi se verá en nuestro repositorio.

ojo, estos archivos son los que controlaran las versiones si revisas algun archivo veras que tiene la estructura archivo,v

para trabajar sobre ellos tenemos que  crear nuestra copia local, en este caso en mi home.

$cd

$cvs checkoout sources

y me crea la copia local estos son los archivos que puedo modificar.

siempre antes de trabajar hago un

$cvs update

para obtener cualquier cambio

trabajo y para guardar los cambios hago un

$cvs commit -m “comentario”

Espero les sirva esta mini guia del cvs.