<body>

Sitios web relacionados: PingBlog | Fotos

sábado, mayo 13, 2006

Haciendo mis respaldos en Lunar Pages

backup index
Haciendo un respaldo desde el sitio de hospedaje


Mientras espero a que se hagan las 11:00 PM para ver en SCFI.com "The Return Of The lving Dead III" (esta vez los muertos vivientes retornan gracias a un barril del famoso gas zombie encontrado en Chernovil), me puse a escribir un programa para hacer un backup de mi sitio web. Yo lo estoy hospedando actualmente en LunarPages.com y ellos ofrecen una página web segura desde la cual te los puedes bajar.

Como la virtud de el Ingeniero es la pereza y me da un dolor testicular agudo (dolor de bolas) pensar que puedo perder mi sitio web sin poder recuperarlo, me decidí a escribir un script que haga el trabajo:

   1:#!/bin/bash
2:#
3:# This script will let you make a web backup of your website
4:# if you host it a lunarpages.com
5:#
6:# Author: josevnz@sourceforge.net
7:# License: LGPL
8:#
9:
10:declare -r SCRIPT=${0##*/}
11:declare -r UKNOWN="uknown"
12:declare -r BCK_DATE=`date +%m-%d-%Y|sed 's#^0##'`
13:declare password=$UNKNOWN
14:declare user=$UNKNOWN
15:declare destination=$HOME/webbackup
16:declare config
17:
18:function usage {
19:cat << EOF
20:$SCRIPT [-u|-d]
21:Where:
22:
23:-u User
24:-d Destination directory
25:-c config properties file
26:
27:You can use all the flags if you want!
28:
29:Blog: KodeGeek - http://kodegeek.com
30:EOF
31:}
32:
33:# Check if a parameter is missing
34:# Argument: Parameter to check
35:# Argument: Parameter name
36:#
37:function isMissing {
38: if [ "$1" == "$UNKNOWN" ]; then
39: printf "[ERROR]: %s is missing!\n" "$2"
40: usage
41: exit 192
42: fi
43:}
44:
45:if [ -z "$*" ]; then
46: usage
47: exit 192
48:fi
49:
50:while getopts "u:s:d:c:" option; do
51: case $option in
52: u)
53: user=$OPTARG
54: ;;
55: d)
56: destination=$OPTARG
57: ;;
58: c)
59: config=$OPTARG
60: ;;
61: *)
62: # Show the help
63: usage
64: exit 0
65: ;;
66: esac
67:done
68:
69:if [ ! -d "$destination" ]; then
70: mkdir -p "$destination"
71:fi
72:cd "$destination"
73:if [ $? != 0 ]; then
74: exit $?
75:fi
76:
77:server="`egrep lunarWebBackup.server $config|cut -f2 -d=`"
78:
79:isMissing "$user" "user name"
80:isMissing "$server" "server"
81:isMissing "$config" "config file"
82:if [ ! -f "$config" ]; then
83: printf "[ERROR]: Unable to open %s" "$config"
84: exit 192
85:fi
86:
87:printf "[INFO]: Connecting with %s\n" "$server"
88:for database in `egrep lunarWebBackup.database $config|cut -f2 -d=`; do
89: /usr/bin/curl
90: --user-agent "${SCRIPT}/Kodegeek 1.0"
91: --referer "$server/frontend/x/backup/index.html"
92: --insecure
93:
--create-dirs
94:
--user "$user"
95:
-o "blog.gz"
96: --url "$server/getsqlbackup/blog.gz" &
97:done
98:
99:for alias in `egrep lunarWebBackup.aliases $config|cut -f2 -d=`; do
100: /usr/bin/curl
101:
--user-agent "${SCRIPT}/Kodegeek 1.0"
102:
--referer "$server/frontend/x/backup/index.html"
103:
--insecure
104:
--create-dirs
105:
--user "$user"
106:
-o "$alias"
107:
--url "$server/getaliasbackup/$alias" &
108:done
109:
110:for filter in `egrep lunarWebBackup.filter $config|cut -f2 -d=`; do
111: /usr/bin/curl
112:
--user-agent "${SCRIPT}/Kodegeek 1.0"
113: --referer "$server/frontend/x/backup/index.html"
114: --insecure
115: --create-dirs
116: --user "$user"
117:
-o "$filter"
118:
--url "$server/getfilterbackup/$filter" &
119:done
120:
121:backup="`egrep lunarWebBackup.backup $config|cut -f2 -d=`"
122:/usr/bin/curl
123:
--user-agent "${SCRIPT}/Kodegeek 1.0"
124:
--referer "$server/frontend/x/backup/index.html"
125:--insecure
126:--create-dirs
127:
--user "$user"
128:-o "$backup-$BCK_DATE.tar.gz"
129:
--url "$server/getbackup/$backup-$BCK_DATE.tar.gz" &
130:
131:wait
132:printf "[INFO]: Remote backup finished"
No quiero guardar claves en el script, no vaya ser y con mi mala suerte me roben el laptop, así que eso se lo paso por la línea de comandos, pero para el resto utilizo un archivo de configuración:
lunarWebBackup.aliases=aliases-kodegeek.com.gz
lunarWebBackup.filter=filter-kodegeek.com.gz
lunarWebBackup.database=blog.gz
lunarWebBackup.backup=backup-kodegeek.com
lunarWebBackup.server=https://xxxx:yyyy

Y como no quiero escribir mucho entonces coloco un alias en mi $HOME/.bashrc:
alias wbackup="$HOME/sf/kodegeek/bin/make_lunar_pages_bckp.sh -c $HOME/etc/wbackup.conf -u"
Y al final lo llamo así:
wbackup usuario:clave
Sencillo. Ahora ya puedo ver a mis Zombies tranquilo, sabiendo que mi respaldo está en mi disco duro.

NOTA: No puedo colocar el código en CVS (aún) porque SF.net está jodido. En algun momento lo actualizare.

NOTA II: El código finalmente está en CVS y también se lo puede bajar desde acá.

Buscar en Technorati: , , ,
Buscar en Blogalaxia: , , ,

4 Comentarios:

Blogger jcamargo dijo que...

Hola josé para correr el programa necesito tener acceso SSH hacia el hosting donde tengo hospedado?

1:25 PM (enlace permanente)  
Blogger KodeGeek dijo que...

Para nada. El programa se baja los archivos de respaldo utilizando HTTPS con el usuario / palabra clave indicada.

pero si leiste bien, es especifico para Lunar Pages y como es que ellos ofrecen los respaldos.

2:17 PM (enlace permanente)  
Blogger 123 dijo que...

lo q' se puede hacer cuando uno espera su pelicula favorita...!!! jejeje :P
¿Tú estas cerca de NY, verdad? estoy tratando de hacer un encuentrico blogguero por allá a finales de Mayo. Avisame si te animas...

Bye bye ;)

4:47 PM (enlace permanente)  
Blogger 123 dijo que...

lo q' se hace cuando uno esta esperando su pelicula favorita...jejeje :p

¿Tú estas por NY, verdad? estoy tratando de reunir unos cuantos bloggueros para un encuentrico a finales de Mayo. Dejame saber si te animas...pasa por mi blog!!!

Bye bye ';)

4:49 PM (enlace permanente)  

Publicar un comentario en la entrada

Enlaces a este articulo:

Crear un vínculo

<< Regresar