Rsync: Cómo sincronizar directorios locales y remotos

rsync comandos

Rsync se ha convertido en una herramienta indispensable para sincronizar archivos y directorios de manera eficaz entre ubicaciones locales y remotas. Su capacidad única para optimizar la transferencia de datos, enviando solo las diferencias entre los archivos fuente y destino, lo hace excepcionalmente eficiente. Esta eficiencia no solo reduce el ancho de banda necesario sino también el tiempo de transferencia, lo que lo convierte en una solución ideal para respaldos, recuperación de datos y la sincronización de archivos en múltiples ubicaciones.

Rsync destaca por su flexibilidad, permitiendo a los usuarios mantener versiones consistentes de archivos en diferentes discos o sistemas sin esfuerzo. Ya sea que necesite sincronizar archivos entre su computadora personal y un servidor remoto o mantener copias espejo de directorios importantes en diferentes dispositivos, Rsync ofrece una solución robusta y confiable.

A lo largo de esta guía, detallaremos cómo instalar y utilizar Rsync, cubriendo desde la sintaxis básica hasta opciones avanzadas y ejemplos prácticos. Nuestro objetivo es proporcionar una comprensión completa de cómo Rsync puede simplificar la tarea de sincronización de archivos, asegurando que sus datos estén siempre actualizados y seguros.

¿Qué es Rsync?

rsync ssh 1

Rsync es una herramienta de línea de comandos ampliamente utilizada para la sincronización rápida y eficiente de archivos y directorios entre dos ubicaciones, ya sean locales o a través de una red. Su diseño está enfocado en minimizar el volumen de datos transferidos al detectar diferencias entre las fuentes y los destinos, transfiriendo solo los cambios. Esta eficiencia lo hace ideal para operaciones de respaldo, replicación de sitios y como una herramienta general de transferencia de archivos.

Una de las características más destacadas de rsync es su algoritmo de diferencia, que permite actualizar archivos con cambios mínimos sin necesidad de transferir el archivo completo. Esto no solo acelera significativamente la transferencia de archivos grandes a través de conexiones lentas, sino que también reduce la carga en las redes.

Además, rsync es altamente configurable, ofreciendo una amplia gama de opciones que permiten a los usuarios controlar exactamente qué archivos se transfieren, cómo se transfieren y qué acciones se realizan antes o después de la transferencia. Esto incluye opciones para preservar los permisos de archivos, enlaces simbólicos, y otros metadatos, lo que lo hace especialmente útil para respaldos completos de sistemas.

Otra ventaja significativa de rsync es su capacidad para realizar transferencias seguras utilizando SSH (Secure Shell), proporcionando una capa adicional de seguridad al cifrar los datos enviados a través de la red. Esto lo convierte en una herramienta invaluable para administradores de sistemas y usuarios que necesitan garantizar la integridad y confidencialidad de sus datos durante la sincronización.

Instalar Rsync

instalar rsync es un proceso sencillo, pero el método varía dependiendo del sistema operativo que esté utilizando. Para la mayoría de los sistemas basados en Unix, como Linux y macOS, rsync ya viene preinstalado o se puede instalar fácilmente a través del gestor de paquetes del sistema.

En sistemas Linux, puede instalar rsync utilizando el gestor de paquetes de su distribución. Por ejemplo, en distribuciones basadas en Debian o Ubuntu, puede utilizar el siguiente comando:

sudo apt-get install rsync

Para usuarios de Fedora, CentOS, o RHEL, el comando sería:

sudo yum install rsync

o, en versiones más recientes que usan dnf:

sudo dnf install rsync

En macOS, rsync generalmente viene preinstalado. Sin embargo, si necesita actualizar a una versión más reciente o si por alguna razón no está instalado, puede utilizar Homebrew, un gestor de paquetes para macOS:

brew install rsync

Para los usuarios de Windows, rsync no está disponible de manera nativa, pero se puede utilizar a través de un entorno como Cygwin o el Subsistema de Windows para Linux (WSL). Cygwin proporciona una gran colección de herramientas de software GNU y de código abierto que ofrecen funcionalidad similar a la de un sistema Linux, mientras que WSL permite a los usuarios ejecutar un entorno de Linux directamente en Windows.

Instalar rsync en Cygwin implica seleccionar el paquete rsync durante el proceso de instalación de Cygwin. Por otro lado, si está utilizando WSL, puede instalar rsync utilizando el gestor de paquetes de la distribución de Linux que haya elegido, de la misma manera que lo haría en un sistema Linux.

rsync

Sintaxis básica

La sintaxis básica de rsync refleja su flexibilidad y potencia como herramienta de sincronización. A su nivel más fundamental, rsync se utiliza especificando un origen y un destino, que pueden ser archivos o directorios, locales o en una máquina remota. El formato general se ve así:

rsync [opciones] origen destino

El origen puede ser un archivo o directorio local, o una ubicación remota accesible a través de SSH o rsync daemon. El destino es donde se copiarán los archivos o directorios. Rsync puede sincronizar en ambas direcciones: puede actualizar el contenido en el destino para que coincida con el origen, o viceversa.

Una característica clave de rsync es su uso de opciones que permiten al usuario controlar el comportamiento de la sincronización. Estas opciones se pueden combinar de maneras complejas para lograr exactamente el tipo de sincronización deseado. Algunas de las opciones más comunes incluyen:

  • -a, --archive: Este modo es una de las opciones más utilizadas. Activa varios modos (como -rlptgoD) para asegurar que los archivos se copien de manera recursiva y que se conserven los permisos, los tiempos de modificación, los enlaces simbólicos y la estructura de directorios, lo que lo hace ideal para copias de seguridad completas.
  • -v, --verbose: Proporciona información detallada sobre la operación de sincronización, lo que es útil para el diagnóstico o para entender exactamente qué está haciendo rsync.
  • -z, --compress: Reduce el tamaño de los datos durante la transferencia, lo que puede ser especialmente útil al trabajar con conexiones de red lentas.

La flexibilidad en la especificación del origen y destino significa que puede utilizar rsync para una amplia gama de tareas de sincronización, desde hacer copias de seguridad locales hasta actualizar sitios web en un servidor remoto. Por ejemplo, para copiar un directorio local a otro directorio local, simplemente especifique las rutas:

rsync -av /path/to/source/ /path/to/destination/

Para sincronizar un directorio local con uno en un servidor remoto, incluya la dirección del servidor, precedida por el usuario y seguida de la ruta en el servidor:

rsync -av /path/to/source/ usuario@servidor:/path/to/destination/

El uso de rsync no se limita a copiar archivos; su verdadera potencia yace en su capacidad para sincronizar efectivamente grandes cantidades de datos con un mínimo de transferencia de red, haciendo que las actualizaciones sean rápidas y eficientes.

Opciones y argumentos

Las opciones y argumentos de rsync son lo que realmente le dan a esta herramienta su poder y versatilidad. Al entender y utilizar estas opciones, los usuarios pueden personalizar sus operaciones de sincronización para adaptarse a una amplia gama de necesidades y escenarios. Aquí detallamos algunas de las opciones más comunes y útiles, además de cómo pueden influir en el comportamiento de rsync.

  • -r, –recursive: Esta opción es crucial cuando se necesita copiar directorios completos. Hace que rsync copie de forma recursiva, asegurando que todos los subdirectorios y archivos dentro del directorio de origen se transfieran al destino.
  • -l, –links: Con esta opción, rsync trata de mantener todos los enlaces simbólicos encontrados en el proceso de sincronización. Es especialmente útil cuando se trabaja en sistemas de archivos Linux/Unix que hacen uso extensivo de enlaces simbólicos.
  • -p, –perms: Para mantener los permisos de archivo originales en el destino, esta opción es indispensable. Asegura que la sincronización respete y aplique los mismos permisos de archivos y directorios que existen en el origen.
  • -t, –times: Mantener las marcas de tiempo de los archivos es crucial para muchas operaciones de sincronización, especialmente para respaldos. Esta opción asegura que las fechas de modificación de los archivos se conserven, permitiendo una sincronización más inteligente que solo actualiza los archivos modificados desde la última sincronización.
  • -z, –compress: Al reducir el tamaño de los datos durante la transferencia, esta opción puede acelerar significativamente las sincronizaciones a través de redes lentas o saturadas. Es ideal para optimizar el ancho de banda disponible.
  • –delete: Una poderosa opción que elimina archivos en el destino que ya no existen en el origen. Es crucial para mantener un espejo exacto del directorio de origen, pero debe usarse con precaución para evitar la eliminación inadvertida de archivos.
  • –exclude: Esta funcionalidad es esencial para omitir archivos o directorios específicos de la sincronización. Puede usarse para excluir archivos temporales o de caché que no necesitan ser transferidos.
  • –dry-run: Una opción indispensable para la planificación y prueba de comandos rsync. Ejecuta el comando sin realizar cambios reales, proporcionando una lista de lo que se haría. Es una excelente manera de verificar el efecto de un comando antes de ejecutarlo realmente.

Cada una de estas opciones se puede combinar para crear comandos rsync muy específicos y adaptados a cualquier necesidad de sincronización. Por ejemplo, para realizar una sincronización completa que mantenga enlaces simbólicos, permisos, y marcas de tiempo, excluyendo archivos temporales y proporcionando una salida detallada sin realizar cambios reales, el comando sería:

rsync -avzplt --dry-run --exclude='temp*' /path/to/source/ /path/to/destination/

Sincronización local

La sincronización local con rsync implica copiar archivos o directorios dentro del mismo sistema de archivos, asegurando que dos ubicaciones en el mismo dispositivo estén sincronizadas. Esta operación es fundamental para crear respaldos locales, organizar archivos y asegurar que las copias redundantes de datos importantes estén actualizadas. Utilizar rsync para sincronización local ofrece varias ventajas, incluida la eficiencia en la transferencia de archivos y la capacidad de aplicar numerosas opciones para personalizar el proceso.

Para realizar una sincronización local, el comando básico de rsync sigue la misma estructura que para cualquier otro tipo de sincronización, pero sin la necesidad de especificar un host remoto. La sintaxis básica sería así:

rsync -av /ruta/origen/ /ruta/destino/

En este comando, -a activa el modo de archivo, que es una combinación de opciones que preserva los permisos, los enlaces simbólicos, y otros atributos, mientras que -v proporciona una salida detallada de la operación. La barra al final de la ruta de origen es importante; indica a rsync que sincronice el contenido del directorio, y no el directorio en sí, lo cual es crucial para asegurar que la estructura de directorios en el destino refleje exactamente al origen.

rsync también permite una gran flexibilidad en cómo se manejan los archivos existentes. Por defecto, rsync solo actualizará los archivos en el destino que han cambiado en el origen, lo que ahorra tiempo y recursos. Sin embargo, con opciones adicionales, los usuarios pueden modificar este comportamiento para, por ejemplo, eliminar archivos en el destino que ya no existen en el origen, utilizando la opción --delete.

La sincronización local no se limita a copiar solo los archivos nuevos o modificados; también ofrece opciones para excluir archivos específicos o patrones de archivos, mantener o cambiar los permisos de archivos y directorios, y mucho más. Por ejemplo, para excluir archivos temporales y de registro mientras se sincronizan directorios localmente, podría usar:

rsync -av --exclude='*.tmp' --exclude='*.log' /ruta/origen/ /ruta/destino/

Esta capacidad para afinar el proceso de sincronización hace de esta herramienta increíblemente poderosa para la gestión de archivos locales. Ya sea que esté respaldando datos importantes, sincronizando proyectos entre directorios, o simplemente organizando archivos, ofrece una solución eficiente y personalizable para sus necesidades de sincronización local.

Sincronización remota

La sincronización remota con rsync es una de las funcionalidades más potentes de esta herramienta, permitiendo a los usuarios mantener sincronizados archivos y directorios entre máquinas a través de una red. Esta capacidad es esencial para administrar respaldos remotos, actualizar sitios web, o incluso para la replicación de datos en entornos de recuperación de desastres. Rsync utiliza SSH (Secure Shell) para la transferencia de datos cifrada, garantizando que la sincronización remota no solo sea eficiente sino también segura.

Para realizar una sincronización remota, rsync requiere que se especifique el host remoto y la ruta del directorio de destino en el comando. La sintaxis general para la sincronización remota se ve así:

rsync -av /ruta/local/ usuario@host_remoto:/ruta/destino/

En este comando, /ruta/local/ representa el directorio de origen en la máquina local, mientras que usuario@host_remoto:/ruta/destino/ especifica el usuario, el host remoto, y el directorio de destino. La opción -a activa el modo archivo para una sincronización completa, y -v proporciona una salida detallada de la operación.

Rsync optimiza la transferencia de datos al enviar solo las partes de los archivos que han cambiado, lo cual es particularmente útil en conexiones de red con ancho de banda limitado o costoso. Además, la integración con SSH no solo cifra los datos en tránsito sino que también facilita la autenticación segura en el servidor remoto, eliminando la necesidad de configuraciones complejas de seguridad o VPNs para proteger la transferencia de datos.

Para usuarios que necesitan mayor control sobre la transferencia, rsync ofrece opciones como --exclude para omitir archivos o directorios específicos, --delete para eliminar archivos en el destino que ya no existen en el origen, y --dry-run para simular la transferencia sin realizar cambios reales. Estas opciones permiten a los usuarios adaptar el proceso de sincronización a sus necesidades específicas, asegurando que solo los datos necesarios sean transferidos o modificados.

Un ejemplo avanzado de sincronización remota podría incluir la compresión de datos para una transferencia más rápida y la exclusión de archivos de registro o temporales:

rsync -avz --exclude='*.log' --exclude='temp/' /ruta/local/ usuario@host_remoto:/ruta/destino/

Esta comando sincroniza el directorio local con el remoto, comprimiendo los datos durante la transferencia (-z), excluyendo archivos de log y el directorio temp/.

Sincronización excluyendo carpetas

La sincronización excluyendo carpetas es una característica poderosa de rsync que permite a los usuarios afinar sus operaciones de sincronización al excluir específicamente directorios (y sus contenidos) que no necesitan ser transferidos. Esta capacidad es invaluable en situaciones donde ciertos directorios contienen archivos temporales, de caché, o simplemente datos irrelevantes para la sincronización en curso. Utilizar correctamente las opciones de exclusión de rsync puede significar ahorros significativos en tiempo y recursos, especialmente en sincronizaciones a gran escala o frecuentes.

Para excluir carpetas específicas durante una operación de sincronización con rsync, se utiliza la opción --exclude, seguida del patrón o nombre del directorio a excluir. Los patrones pueden incluir caracteres comodín, como *, para excluir múltiples carpetas o archivos que coincidan con el patrón dado.

Un ejemplo básico de cómo excluir una carpeta sería:

rsync -av --exclude 'nombre_carpeta_a_excluir/' /ruta/origen/ /ruta/destino/

En este comando, nombre_carpeta_a_excluir/ es el nombre del directorio en la ruta de origen que rsync omitirá durante la sincronización. Es importante notar que el uso de la barra al final del nombre de la carpeta indica a rsync que el objeto excluido es un directorio.

Para situaciones más complejas, donde se necesitan excluir múltiples carpetas, se pueden añadir múltiples opciones --exclude en el mismo comando:

rsync -av --exclude 'temp/' --exclude 'caché/' --exclude 'logs/' /ruta/origen/ /ruta/destino/

Este comando excluiría las carpetas temp/, caché/, y logs/ de la sincronización. Esta técnica es especialmente útil para evitar la transferencia de datos que no afectan el estado o funcionamiento de la aplicación o datos sincronizados, como archivos temporales o de registro.

Además, rsync permite el uso de un archivo que liste múltiples patrones de exclusión. Esto es útil para sincronizaciones que requieren reglas de exclusión complejas o extensas, simplificando la línea de comandos y haciendo el proceso de sincronización más manejable y menos propenso a errores. Para utilizar esta característica, se crea un archivo de texto con cada patrón de exclusión en una nueva línea y se utiliza la opción --exclude-from seguido del nombre del archivo:

rsync -av --exclude-from='archivo_exclusiones.txt' /ruta/origen/ /ruta/destino/

Donde archivo_exclusiones.txt contiene una lista de nombres de carpetas o patrones a excluir.

Sincronización excluyendo ficheros

La sincronización excluyendo ficheros es otra característica esencial de rsync que permite a los usuarios omitir archivos específicos durante el proceso de sincronización. Esta funcionalidad es particularmente útil cuando ciertos archivos no son necesarios en el destino o cuando se desea evitar la transferencia de archivos temporales, de configuración personal o sensibles. Al igual que con la exclusión de carpetas, rsync ofrece flexibilidad para excluir archivos individuales o grupos de archivos que coincidan con patrones específicos, lo que ayuda a personalizar y optimizar las operaciones de sincronización.

Para excluir archivos específicos durante una sincronización con rsync, se utiliza la opción --exclude seguida del nombre del archivo o patrón a excluir. Por ejemplo, para excluir todos los archivos .tmp de la sincronización, se podría usar:

rsync -av --exclude '*.tmp' /ruta/origen/ /ruta/destino/

Este comando evita que cualquier archivo que termine en .tmp en la ruta de origen se transfiera al destino. La utilización de caracteres comodín como * permite excluir múltiples archivos que coincidan con el patón dado, haciendo que esta opción sea extremadamente versátil.

Para situaciones donde se necesite excluir varios tipos de archivos o nombres de archivos específicos, se pueden añadir múltiples opciones --exclude en el mismo comando. Por ejemplo, para excluir archivos de registro y archivos temporales de caché, el comando sería:

rsync -av --exclude '*.log' --exclude '*cache*' /ruta/origen/ /ruta/destino/

En este caso, *.log y *cache* son patrones que coinciden con todos los archivos de registro y archivos que contienen la palabra «cache» en su nombre, respectivamente.

Al igual que con la exclusión de carpetas, también soporta la exclusión de archivos utilizando un archivo de exclusiones. Esto es especialmente útil para configuraciones de sincronización complejas o cuando se tiene una larga lista de archivos a excluir. Para utilizar esta funcionalidad, simplemente se crea un archivo de texto con los patrones de exclusión, uno por línea, y se utiliza la opción --exclude-from:

rsync -av --exclude-from='archivo_exclusiones.txt' /ruta/origen/ /ruta/destino/

Aquí, archivo_exclusiones.txt contendría la lista de nombres de archivos o patrones a excluir de la sincronización.

Sincronización con –dry-run

rsync dry run

la opción –dry-run de rsync es una herramienta invaluable para cualquier usuario que necesite planificar o verificar sus operaciones de sincronización antes de ejecutarlas. Esta opción simula el proceso de sincronización sin realizar ninguna transferencia de archivos o cambios en los sistemas de archivos tanto de origen como de destino. Al ejecutar con –dry-run, los usuarios pueden obtener una vista previa de qué archivos serían añadidos, modificados, o eliminados, permitiéndoles ajustar sus comandos o reglas de exclusión antes de proceder con la sincronización real.

Utilizar –dry-run es particularmente útil en escenarios donde las consecuencias de una sincronización incorrecta pueden ser significativas, como la sobrescritura de archivos críticos o la eliminación de datos importantes. También es una excelente manera de aprender y experimentar con las diversas opciones de rsync sin el riesgo de alterar los datos.

Para emplear esta opción, simplemente añada –dry-run (o -n) a su comando habitual. Por ejemplo, para verificar qué archivos serían transferidos en una sincronización sin realizar la transferencia real, usaría:

rsync -av --dry-run /ruta/origen/ /ruta/destino/

Este comando proporcionará una lista de las acciones que rsync llevaría a cabo si se ejecutara sin la opción –dry-run, incluidas las transferencias de archivos, las actualizaciones y las eliminaciones. Es una forma efectiva de verificar que sus patrones de exclusión funcionen como se espera, que los permisos de archivos y directorios se conserven correctamente, y que solo los datos deseados sean sincronizados.

Además de verificar la precisión de los comandos de sincronización, –dry-run puede ser útil para generar registros de qué cambios se necesitarían sin realizar esos cambios. Esto puede ser valioso para auditorías de archivos, planificación de respaldos, o incluso para tareas de mantenimiento rutinario donde se requiere una revisión previa de las acciones propuestas.

Ejemplos avanzados Rsync

Los ejemplos avanzados rsync ilustran la potencia y versatilidad de esta herramienta, mostrando cómo se puede adaptar a una variedad de necesidades complejas de sincronización. A través de la combinación de opciones y argumentos, rsync puede manejar desde sincronizaciones de archivos detalladas hasta operaciones de respaldo y replicación a gran escala. Estos ejemplos avanzados sirven como guía para aprovechar al máximo las capacidades de la herramienta.

Uno de los ejemplos avanzados incluye la sincronización de un directorio local con uno remoto a través de SSH, asegurando que la transferencia de datos sea segura y encriptada. Para este propósito, se utiliza la opción -e para especificar SSH como el método de transporte:

rsync -avz -e ssh /ruta/local/ usuario@host_remoto:/ruta/destino/

Este comando no solo sincroniza los directorios de manera eficiente, comprimiendo los datos durante la transferencia (-z) y manteniendo los permisos y la estructura de directorios (-a), sino que también protege los datos mediante encriptación.

Para usuarios que necesitan realizar copias de seguridad incrementales, rsync ofrece una solución robusta con la creación de enlaces simbólicos a los archivos no modificados, usando la opción --link-dest. Esto permite que las copias de seguridad ocupen menos espacio, ya que solo se almacenan las versiones nuevas o modificadas de los archivos, mientras que para los archivos sin cambios se crean enlaces al respaldo anterior:

rsync -av --link-dest=/ruta/respaldo/anterior /ruta/origen/ /ruta/respaldo/actual/

Este enfoque es especialmente valioso para administradores de sistemas y profesionales de TI que buscan optimizar el almacenamiento de respaldos sin sacrificar la accesibilidad o integridad de los datos.

Otro ejemplo avanzado implica el uso de rsync para espejar un sitio web, excluyendo archivos o directorios específicos que no son necesarios para la copia espejo, como scripts de servidor o datos de configuración. Combinando --exclude con otras opciones, se puede personalizar la sincronización para ajustarse a los requisitos exactos del sitio:

rsync -avz --exclude 'data/' --exclude '.htaccess' /var/www/ usuario@host_remoto:/var/www_espejo/

Además, para administradores que deseen verificar las operaciones de sincronización antes de ejecutarlas, la combinación de --dry-run con una salida detallada (-v) y la opción --stats para obtener un resumen estadístico, proporciona una herramienta de diagnóstico y planificación excepcional:

rsync -avz --dry-run --stats /ruta/origen/ /ruta/destino/

Estos ejemplos avanzados rsync demuestran cómo la herramienta puede ser adaptada para cumplir con requisitos específicos de sincronización, respaldo, y replicación de datos, ofreciendo a los usuarios un control sin precedentes sobre sus operaciones de transferencia de archivos. La clave para desbloquear el potencial completo de rsync reside en comprender y aplicar sus numerosas opciones y argumentos de manera efectiva.

Preguntas frecuentes

¿Puede rsync reanudar transferencias interrumpidas? Sí, rsync es capaz de reanudar transferencias de archivos interrumpidas. Utilizando la opción --partial, rsync guarda las partes de archivos que fueron transferidas antes de la interrupción, permitiendo que la transferencia continúe desde el punto de interrupción en vez de empezar de nuevo desde cero. Esto es especialmente útil para transferir archivos grandes a través de conexiones inestables.

¿Cómo asegurar la transferencia de datos con rsync? Para asegurar la transferencia de datos, rsync puede ser usado junto con SSH para encriptar la conexión. Esto se logra con la opción -e ssh, que especifica SSH como el método de transporte. Esta práctica no solo protege los datos durante la transferencia sino que también aprovecha la autenticación y seguridad inherentes a SSH.

¿rsync puede sincronizar archivos en ambos sentidos? Por defecto, rsync está diseñado para sincronizar archivos en una sola dirección, ya sea de local a remoto o viceversa. Sin embargo, para lograr una sincronización bidireccional, se pueden utilizar herramientas de terceros que envuelven rsync o ejecutar dos operaciones rsync sucesivas, una en cada dirección, teniendo cuidado con las exclusiones y sobreescrituras para evitar la pérdida de datos.

¿Cómo excluir archivos o carpetas específicos en rsync? Para excluir archivos o carpetas específicos durante una operación de sincronización, se utiliza la opción --exclude, seguida del patrón de archivo o nombre de carpeta a excluir. También permite el uso de la opción --exclude-from para especificar un archivo que contenga una lista de patrones de exclusión, lo que facilita la gestión de exclusiones complejas.

¿Cómo maneja rsync los enlaces simbólicos? Rsync puede copiar enlaces simbólicos de varias maneras, dependiendo de las opciones utilizadas. Con la opción -l o --links, recreará el enlace simbólico en el destino. Si se utiliza -a, que es una combinación de varias opciones, incluida -l, los enlaces simbólicos se conservarán como tales. Para copiar el contenido al que apunta el enlace simbólico, en lugar del enlace en sí, se puede usar la opción -L o --copy-links.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *