Si eres usuario de wordpress.com quizá en algún momento te interese dar el salto a un dominio y hosting propio. Para ello wordpress dispone de unas herramientas que nos exportan todo el contenido del blog en formato xml.
Así ya con WordPress en funcionamiento en nuestro servidor, solo tenemos que instalar y activar el plugin WordPress Importer y hacer la operación inversa, es decir importar el contenido del archivo XML y transferir todos los datos.
Fácil ¿verdad? Bueno, no tanto…es posible que llevéis unos cuantos años con vuestro blog, tengáis un montón de entradas, comentarios y material que subir, y el archivo no se pueda importar por exceso de tamaño, debido principalmente a alguna limitación de seguridad impuesta por el proveedor del hosting.
Existen varias soluciones para ese problema, pero una muy sencilla es dividirlo en partes más pequeñas, por debajo del limite de subida.
Esto se puede hacer de forma manual o de una manera mucho más cómoda con un script en python denominado splitter, creado por un usuario del foro de WordPress.org, llamado Eraac y que a mi me ha dado muy buen resultado.
#!/usr/bin/python # This script is designed to take a wordpress xml export file and split it into some # number of chunks (2 by default). The number of lines per chunk is determined by counting # the number of occurences of a particular line, '\n' by default, and breaking up the # such that each chunk has an equal number occurences of that line. The appropriate header # and footer is added to each chunk. import os import sys import math if len(sys.argv) < 2 : print 'Please specify the name of wordpress export file you would like to split' sys.exit(0) try : input_file = open(sys.argv[1], 'r') lines = input_file.readlines() (input_file_path, input_file_string) = os.path.split(sys.argv[1]) (input_file_name, input_file_extension) = os.path.splitext(input_file_string) except IOError : print 'Could not open file "%s".' % sys.argv[1] sys.exit(0) number_of_chunks = max(int(sys.argv[2]), 2) if len(sys.argv) > 2 else 2 line_delimiter = '\n' delimiter_count = 0 for line in lines : if line == line_delimiter : delimiter_count += 1 print '' print 'File "%s" contains %s items' % (input_file_string, delimiter_count) delimiter_count = 1.0*delimiter_count delimiters_per_chunk = int(math.ceil(delimiter_count/number_of_chunks)) print 'Creating %s files with at most %s items each:' % (number_of_chunks, delimiters_per_chunk) header = "" footer = "\n\n\n" chunk_number = 1 output_file_name = "%s_%s%s" % (input_file_name, chunk_number, input_file_extension) output_file = open(output_file_name, 'w') print ' Writing chunk %s to file %s...' % (chunk_number, output_file_name) delimiter_count = 0 for line in lines : if line == line_delimiter : delimiter_count += 1 if chunk_number is 1 and delimiter_count is 0 : header += line if delimiter_count > delimiters_per_chunk : output_file.write(footer) output_file.close() chunk_number += 1 delimiter_count = 1 output_file_name = "%s_%s%s" % (input_file_name, chunk_number, input_file_extension) output_file = open(output_file_name, 'w') print ' Writing chunk %s to file %s...' % (chunk_number, output_file_name) output_file.write(header) output_file.write(line) output_file.close() print 'Done!\n'
Ahora lo único que tenéis que hacer es copiar el texto del programa en un editor o un IDE, como puede ser Geany, guardarlo como splitter.py (o el nombre que se os ocurra) y darle permisos de ejecución, en las propiedades del archivo.
Finalmente para dividir nuestro archivo xml, tan solo tenemos que ejecutar esto en la terminal
./splitter.py nombre_archivo.xml n
donde n, es el número de veces que lo queréis dividir, por ej:
./splitter.py lamiradadelreplicante.xml 8
Cuando migré a WordPress tuve un problema similar, en aquellos días usé un programa que se llama WXR File Splitter …
http://linuxmanr4.com/2011/11/26/migrando-de-blogsome-a-wordpress/
Funcionó bastante bien 🙂
Lo vi mencionado en algún lado, pero no encontré ninguna versión para linux
Xose eres un crack!!
Entonces tienes wordpress hospedado en un hosting??
‘ve phun !!
Si y por ahora bastante contento…aunque tuve algunos problemillas de novato, nada demasiado grave (bueno ayer me cargué el sistema de los comentarios durante un par de horas y hoy una plantilla que me gustaba para wordpress la dejé totalmente inservible…pero bueno de todo eso, se aprende XD)
Enhorabuena por el salto de calidad.
Y el script me lo llevo a GitHub para tenerlo a mano para el futuro.
https://github.com/manuti/wp-split-xml
Gracias amigo! Todavía me queda darle el toque visual y encontrar una plantilla de wordpress que me convenza, pero sin prisas que tampoco quiero estar mareando a la gente con cambios cada dos días xD
gracias,por el tutorial
De nada @javier. Me alegra que te haya servidor.
Hola,
estoy tratando de dividir un archivo xml de 6GB pero al ejecutar en cmd me muestra que no se conoce como un comando interno. Podrías ayudarme con eso??
saludos.