Una de las características que tiene WordPress, es la capacidad de exportar e importar en formato XML todo el contenido de nuestro blog a modo de backup. Ésto es muy útil, ya que cuando nos vemos obligados a cambiar de servidor por alguna razón determinada, importar una base de datos se puede convertir en una tarea que roza lo imposible, sobretodo si no contamos con privilegios suficientes en la misma o la versión de MySql del servidor en el que estábamos alojados difiere de la del destino.
Por éstas razones, resulta muy importante la antes mencionada característica de WordPress. Sin embargo, cuando nuestro blog “crece”, el tamaño del archivo xml que genera WordPress también lo hace. El problema de ésto, es que WordPress sólo puede gestionar (en teoría) archivos de un tamaño máximo de 2MB, y ése es el límite que nos ponen muchos hosts a la hora de subir un archivo, por lo que resulta imprescindible dividir en partes el XML si queremos recuperar todos nuestros datos.
A continuación, explico brevemente cómo y por dónde dividir un archivo XML de WordPress, ya que no se debe hacer a ciegas debido a que éste contiene información estructurada sobre cada post, comentario, categorías, etc, de una manera ordenada.
Codificación del archivo
En primer lugar, debemos crear un archivo de texto ANSI codificado como UTF-8 sin BOM (ésto se puede hacer perfectamente en algún editor de texto completo como Notepad++ en Windows o Smultron en Mac). Es muy importante que la codificación se ésta, ya que en caso contrario no nos detectará caracteres como tildes, ñ, etc.
Estructura del archivo
La estructura de un archivo xml de WordPress es la siguiente:
<?xml version="1.0" encoding="UTF-8"?>
<rss>
<channel>
/* INICIO INTRODUCCIÓN */
<title>bocabit.elcomercio.es</title> /* Título del blog */
<link></link> /* Dirección del blog */
<description></description> /* Descripción */
<pubDate>Thu, 05 Jun 2008 13:35:15 +0000</pubDate> /* Última fecha de publicación */
<generator>http://wordpress.org/?v=2.5.1</generator> /* Versión de WordPress */
<language>en</language> /* Idioma */
<wp:wxr_version>1.0</wp:wxr_version>
<wp:base_site_url>http://bocabit.elcomercio.es</wp:base_site_url> /* Dirección base */
<wp:base_blog_url>http://bocabit.elcomercio.es</wp:base_blog_url> /* Dirección base del blog */
/* FIN INTRODUCCIÓN */
/* INICIO CATEGORÍAS */
<wp:category></wp:category>
/* FIN CATEGORÍAS */
/* INICIO TAGS */
<wp:tag></wp:tag>
/* FIN TAGS */
/* INICIO POSTS */
<item></item>
/* FIN POSTS */
</channel>
</rss>
Puntos a tener en cuenta
- Debemos poner las etiquetas xml, channel y rss en todos los archivos
- No debemos dividir un dato etiquetado con “item” por la mitad. Cada elemento debe estar entero.
- 2MB vienen a ser unas 31.600 líneas de código (Éste deberá ser el tamaño máximo de cada fichero)
Ejemplo
Si queremos dividir un archivo XML que ocupe 4’3 MB (Por poner un ejemplo), deberemos crear 3 archivos xml distintos, cada uno de 31.600 líneas (más o menos) como máximo.
En el primer archivo, pondremos la introducción, las categorías y los tags. Además, también meteremos todos los posts que nos entren (cada item es un post).
En el segundo y tercer archivo respectivamente, partiremos de donde terminamos de copiar el anterior, cogiendo el siguiente post y rellenando hasta llegar a las 31.600 líneas.
Importación
Cuando decidamos importar los archivos, creo que podemos hacerlo en el orden que queramos, aunque yo recomiendo hacerlo en el orden que los hemos dividido (en el primero debe estar la introducción).
Y hasta aquí, cómo dividir un archivo XML de WordPress. Como veis, sólo hace falta analizar un poco la estructura del fichero y a partir de ahí no tiene ninguna dificultad, aunque es verdad que si tenemos un blog con muchas entradas, se puede convertir en una tarea muy pesada.


Que conste que el límite es de la configuración del PHP, no de WordPress. De hecho, si tenemos permisos para tocar el php.ini o podemos crear configuraciones locales (en SiteGround se puede, por ejemplo), se puede cambiar este límite tocando un par de parámetros. También es conveniente alterar el tiempo de ejecución máximo, para que no de problemillas
Gracias por la info Manu
Por supuesto, la opción de dividir en partes el XML es útil en caso de que no puedas modificar los parámetros que dices o si no te quieres complicar mucho la vida enredando en la base de datos (hay mucha gente que no sabe utilizarla).
@Manu: Que yo sepa, igual me equivoco, y que recuerde, la configuración para el límite de carga en el servidor así como el tiempo de ejecución depende directamente de la configuración del servidor. En caso de ser Apache habría que toquetear el archivo httpd.conf.
Al menos fue lo que tuve que hacer yo cuando hace dos años me pillé un server privado.
Aún así este post está interesante, aunque yo siempre hago backups en SQL xD
Este tuto está muy bueno y fácil de aplicar!
[...] una herramienta que me ayudó a fraccionar los archivos xml. me refiero a este buen tutorial de ?bocabit donde encontré la manera de dividir archivos xml mayores de 2 [...]
[...] Si es demasiado grande puede que no te permita subirlo: en ese caso debes fragmentarlo. ¿Cómo? The-RockeR lo explica muy bien en su blog . Sube entonces todos los fragmentos que hayan hecho falta [...]
Gracias por tu post. Acabo de hacerlo y ha salido perfecto.
Hola, he tratado de hacer lo que indicais en el manual, pero no puedo.
Tengo montado WordPress en LocalHost y lo que quiero es Exportar lo que tengo en el LocalHost a otro servidor externo. Mi problema es que cuando trato de generar el fichero XML, se corta. Unas veces el fichero llega a 2,7MB y otras veces hasta 3,6MB.
Sin embargo, si lo Exporto desde WORDPRESS.COM, me genera perfectamente un archivo de 12MB en XML.
Mi problema, es que en LOCALHOST tengo las ultimas actualizaciones del fichero, puesto al día y necesito EXPORTARLO desde aquí. Ya que en WORDPRESS.COM esta la versión vieja.
He tratado de modificar el fichero PHP.INI, pues al mirar el XML me da error (max.time exceeded 60 seconds in …).
Pero aun modificando la línea, continua cortandose el fichero y no logro que me haga el backup en XML de todo el contenido.
Necesito ayuda, para poder configurar bien mi LOCALHOST, uso XAMPP con APACHE y MYSQL.
¿Alguien me ayuda? GRACIAS.
LA idea no esta mal pero cuando tienes un archivo enorme de mas de 25 mb sera todo un rollo.
slds
@tecnologia, un coñazo total, pero no queda otro remedio si tu hosting te limita las subidas http a los 2mb…
@Javier, es muy raro, la verdad es que no sé que puede ser…
Hola: A mi me parece más rápido utilizar WPsplitter. Un programita minúsculo que ni se instala. Se copia la carpeta al PC y se hace un acceso directo al escritorio. Se ejecuta. Aperece una ventana de búsqueda del archivo XML grande. Le das ok y genera varios archivos xml de 1MB en el mismo directorio donde está el xml principal.
El archivo txt explica cómo definir el tamaño de salida del xml pero a mi no me ha funcionado. En todo caso 1MB por archivo está bastante bien, y te demoras menos que andar modificando códigos.
Saludos a todos.
Bueno ami el primer archivo lo puede subir bien pero los otro me da un error hay que mas luego lo pongo