Cómo copiar un sitio web PHP a otro servidor

Has invertido tiempo y dinero configurando tu web PHP perfectamente. Ahora necesitas copiarla a otro servidor o carpeta distinta en el actual. Tienes varias opciones. Usa un script PHP para copiar los archivos al nuevo destino. Solo crea el script, súbelo a tu servidor y ejecútalo. Todos los archivos de tu sitio se copiarán al nuevo destino.

Paso 1: Crear script PHP

Abre un editor de texto (Bloc de notas) o autor web. "Archivo" > "Nuevo".

Paso 2: Código básico para un archivo

Escribe el siguiente código PHP para copiar un archivo:
bool copy (string $origen, string $destino [, resource $contexto])
Sin comillas. Cambia "$origen" por la ruta del archivo PHP a mover. Cambia "$destino" por la ruta de destino.

Paso 3: Script para copiar directorio completo (public_html)

Para ahorrar tiempo con muchos archivos, usa este script recursivo para copiar todo el directorio public_html a otra ubicación:
<?php
function copiar_todo($origen, $destino) {
  $dir = opendir($origen);
  @mkdir($destino);
  while (false !== ($archivo = readdir($dir))) {
    if ($archivo != '.' && $archivo != '..') {
      if (is_dir($origen . '/' . $archivo)) {
        copiar_todo($origen . '/' . $archivo, $destino . '/' . $archivo);
      } else {
        copy($origen . '/' . $archivo, $destino . '/' . $archivo);
      }
    }
  }
  closedir($dir);
}
?>

Guarda como archivo PHP (ej. copiar.php) y súbelo a tu carpeta public_html. Ejecútalo accediendo a su URL en el navegador. Indica el destino y deja que el script trabaje.

Consejo crucial: Base de datos

Este script solo copia archivos PHP, no la base de datos. Debes exportar los datos de tu base de datos e importarlos en una nueva en el nuevo servidor. Ve a phpMyAdmin en tu cPanel (herramienta de gestión del hosting), selecciona la base de datos y clic en "Exportar". Se exportará como SQL (no CSV, mejor SQL para estructura y datos). En el nuevo servidor, crea la BD e "Importar" el archivo SQL.

Métodos alternativos y mejores prácticas:

  • rsync / scp (SSH): Más rápido, fiable, preserva permisos, dueños, enlaces simbólicos. rsync -avz /ruta/origen/ usuario@servidor_destino:/ruta/destino/
  • Panel de hosting (cPanel, Plesk): "Copiar cuenta" / "Backup/Restore" / "Migración".
  • Duplicator / All-in-One WP Migration (WordPress): Plugins que empaquetan archivos + BD en un instalador.
  • Git / CI-CD: Despliegue profesional desde repositorio.