Contents
Introducción
Migrar un sitio de WordPress entre servidores o entornos de desarrollo puede parecer una tarea compleja, especialmente cuando la cantidad de archivos y la estructura de directorios crecen con el tiempo. rsync es una herramienta de sincronización de archivos muy eficiente que minimiza el tiempo de transferencia y asegura la integridad de los datos. En este artículo, analizaremos en detalle cómo utilizar rsync para migrar los archivos de WordPress de manera segura, rápida y reproducible.
¿Qué es rsync
rsync (Remote Sync) es una utilidad de código abierto para sistemas Unix/Linux que sincroniza archivos y directorios entre dos ubicaciones, ya sean locales o remotas. Comparando bloques de datos, rsync transfiere únicamente las partes modificadas, reduciendo así el ancho de banda y el tiempo de transferencia. Más información en el sitio oficial:
https://rsync.samba.org/
Ventajas de usar rsync en migraciones de WordPress
- Incrementalidad: Transfiere sólo los cambios, optimizando recursos.
- Fiabilidad: Verificación de sumas de control para asegurar integridad.
- Flexibilidad: Gran cantidad de opciones para incluir/excluir archivos.
- Compresión: Opción -z para comprimir datos en tránsito.
- Reanudación: Si la conexión se interrumpe, puede reanudar sin perder progreso.
Preparativos antes de la migración
- Realizar una copia de seguridad de la base de datos y archivos con procedimientos oficiales.
- Verificar conectividad SSH entre el servidor origen y destino.
- Instalar rsync en ambos servidores (ejemplo en Debian/Ubuntu: sudo apt install rsync).
- Asegurarse de contar con espacio suficiente en el destino.
- Bloquear temporalmente el sitio (modo mantenimiento) para evitar cambios concurrentes.
Opciones de rsync más útiles
Opción | Descripción | Ejemplo |
---|---|---|
-a | Modo archivo (recursivo, preserva permisos, dueños, fechas). | rsync -a /origen/ /destino/ |
-v | Verbose, muestra progreso detallado. | rsync -av … |
-z | Comprime datos durante la transferencia. | rsync -az … |
-P | Muestra progreso y permite reanudar descargas. | rsync -aP … |
–delete | Elimina en destino archivos borrados en origen. | rsync -a --delete … |
-e ssh | Usa SSH como transporte remoto. | rsync -e ssh … |
Ejemplos de comandos para migrar WordPress
-
Desde local a servidor remoto:
rsync -azP --delete -e ssh /ruta/a/wordpress/ usuario@servidor:/ruta/web/
-
Entre dos servidores remotos (hostA a hostB):
rsync -avz --delete -e ssh usuario@hostA:/var/www/html/ usuario@hostB:/var/www/html/
-
Uso de un archivo de exclusión:
rsync -av --exclude-from=excludes.txt /origen/ /destino/
excludes.txt puede contener carpetas temporales, cachés y archivos de registro.
Excluyendo archivos y directorios innecesarios
Al migrar WordPress, es habitual omitir archivos que no deben copiarese. Ejemplos:
- wp-content/cache/
- wp-content/backups/
- .htaccess (si se recrea automáticamente)
- logs, archivos tmp y .DS_Store
Archivo excludes.txt de ejemplo:
cache/
/backups/
/.log
.tmp
.DS_Store
Preservación de permisos y enlaces simbólicos
El modificador -a implica -rlptgoD, que preserva:
- r: enlaces simbólicos
- l: archivos regulares
- p: permisos
- t: marcas de tiempo
- g: grupo
- o: propietario
- D: dispositivos y especiales
Para usuarios no root, podría omitirse la preservación de propietarios con –no-o.
Consideraciones de seguridad
- No exponer puertos rsync sin SSH • use siempre -e ssh.
- Configurar autenticación por clave pública/privada para SSH sin contraseña.
- Revisar permisos de archivos tras la migración.
- Bloquear el modo mantenimiento en producción (plugins como WP Maintenance Mode).
Validación y comprobaciones posteriores
- Comparar conteo de archivos:
find /origen wc -l
vsfind /destino wc -l
. - Verificar checksums con
md5sum
osha256sum
en muestras de archivos. - Probar el sitio en entorno destino antes de cambiar DNS o levantar en producción.
Automatización con scripts
Se puede encapsular el comando en un script shell que incluya variables y registro de logs:
#!/bin/bash
ORIGEN=/var/www/html/
DEST=usuario@servidor:/var/www/html/
EXCLUDE=/home/user/excludes.txt
LOG=/var/log/rsync-wordpress.log
echo Iniciando sincronización: (date) >> LOG
rsync -azP --delete -e ssh --exclude-from=EXCLUDE ORIGEN DEST >> LOG 2>1
echo Finalizado: (date) >> LOG
Recursos adicionales
Publicado el: 2024-06
|
Acepto donaciones de BAT's mediante el navegador Brave 🙂 |