Idioma
Categoría
Buscar

Cómo usar rsync con NTFS y FAT32 en Linux: Problemas y soluciones

Sincronización de archivos entre Linux, NTFS y FAT32. Comprenda las limitaciones de las marcas de tiempo y los permisos y aprenda a solucionarlos con opciones como modify-window y size-only

Índice

Cómo usar rsync con NTFS y FAT32 en Linux: Problemas y soluciones
En Terminal Por Rudi Drusian Lange
Publicado el
Última actualización

Introducción

Al utilizar rsync en particiones NTFS o FAT32, es necesario considerar particularidades de estos sistemas de archivos en relación con los utilizados en sistemas basados en Unix. En entornos Unix, es común utilizar la opción -a como parámetro del comando rsync, lo que equivale al conjunto de opciones -rlptgoD:

Los parámetros mencionados tienen las siguientes funciones:

  • -r Copia subdirectorios recursivamente.
  • -l Copia enlaces simbólicos como enlaces.
  • -p Preserva permisos.
  • -t Preserva fechas de modificación (timestamps).
  • -g Preserva el grupo.
  • -o Preserva el propietario.
  • -D Transfiere archivos de dispositivos especiales y de bloques (por ejemplo, sda, tty).

Para información detallada sobre el uso del comando rsync en Linux, consulte:

De los parámetros listados, los sistemas de archivos utilizados en Windows soportan plenamente solo la copia recursiva -r. NTFS y FAT32 no ofrecen soporte para las opciones -p, -g, -o y -D. Aunque las versiones más recientes de NTFS permiten el uso de enlaces simbólicos, no son compatibles con el estilo Unix, lo que puede hacer que la opción -l falle.

La preservación de las fechas de modificación -t (timestamp) es soportada, pero en algunos casos pueden ocurrir diferencias en la precisión utilizada. NTFS emplea una precisión de 100 nanosegundos, mientras que, en sistemas basados en Unix, esta precisión puede variar de 1 segundo a microsegundos.

Entre sistemas de archivos Unix más modernos, como ext4 y XFS, y NTFS, no deben ocurrir problemas en la verificación de timestamps. Sin embargo, cuando se trata de FAT32, la discrepancia se vuelve más significativa. Esto puede llevar a que rsync interprete archivos idénticos como diferentes debido a la variación en la fecha de modificación.

Existen opciones para sortear estas limitaciones, como se demostrará a continuación.

Ambiente

Los comandos utilizados en este artículo fueron probados en Slackware Linux 15, con el kernel 5.15.161, y deberían funcionar en cualquier sistema Linux o basado en Unix. El sistema de archivos raíz fue formateado con ext4, mientras que particiones NTFS y FAT32 fueron utilizadas en otros discos presentes en el mismo sistema.

En las pruebas, las particiones NTFS fueron montadas tanto con ntfs-3g, un controlador ampliamente utilizado en espacio de usuario desde hace años, como con el controlador NTFS nativo del kernel, introducido en la versión 5.15. El comportamiento de rsync fue el mismo en ambos casos.

Usando rsync con NTFS

En versiones más recientes de los sistemas de archivos usados en Linux y NTFS, rsync debería funcionar normalmente tanto entre particiones Linux y NTFS como entre particiones NTFS, incluso al utilizar el parámetro -a, que incluye opciones incompatibles con NTFS, como se discutió anteriormente.

Esto ocurre porque, al montar una partición NTFS, Linux simula permisos de archivo. Así, los parámetros no soportados son ignorados, y los archivos reciben propietario, grupo y permisos según se definieron durante el montaje.

Es esencial que las particiones sean montadas con permisos adecuados para el usuario que ejecutará el comando rsync. Si la unidad está montada con propiedad del usuario root, incluso si otros usuarios tienen permiso de lectura y escritura, rsync presentará un error al intentar definir la fecha de modificación:

failed to set times on "/carpeta/de/destino/": Operation not permitted (1)

Este error impedirá que rsync verifique correctamente si los archivos en el destino son idénticos a los de origen, resultando en una copia redundante de los archivos en cada ejecución del comando.

Para evitar este error, la partición debe ser montada con los permisos apropiados. Un ejemplo de configuración en el archivo /etc/fstab es:

/etc/fstab

/dev/sdXn   /mnt/particion   ntfs3   fmask=022,dmask=022,uid=1000,gid=100

Donde:

  • uid=1000 Reemplace 1000 por el ID del usuario.
  • gid=100 Reemplace 100 por el ID del grupo del usuario.
  • fmask=022 Concede permiso total para el propietario del archivo y permisos de lectura y ejecución para el grupo y otros usuarios.
  • dmask=022 Concede permiso total para el propietario del directorio y permisos de lectura y ejecución para el grupo y otros usuarios.

Con los permisos adecuados, rsync puede ser utilizado con las opciones convencionales:

$ bash

rsync -av /origen/ /destino/

Después de la primera ejecución y la copia de los archivos al destino, ejecute el comando nuevamente para verificar si los archivos se copian se copien en el segundo intento. Si es así, rsync falló al comparar los timestamps. Si todo está correcto, en la segunda ejecución, ningún archivo debe ser transferido.

Si el comando falla debido a permisos o al uso de controladores más antiguos, puede ejecutarlo utilizando solo los parámetros compatibles con NTFS:

$ bash

rsync -rtv /origen/ /destino/

En este ejemplo, rsync se ejecuta con las siguientes opciones:

  • -r Habilita el modo recursivo.
  • -t Preserva la fecha de modificación (timestamp).
  • -v Muestra detalles de la transferencia (verbose).

Use el parámetro --modify-window

NTFS puede mostrar pequeñas diferencias en la precisión de los timestamps en comparación con sistemas basados en Unix. Para evitar esta limitación, use el parámetro --modify-window, que permite un margen de error al comparar timestamps. Por ejemplo:

$ bash

rsync -rtv --modify-window=1 /origen/ /destino/

Esto informa a rsync para considerar los timestamps iguales si la diferencia entre ellos es de hasta 1 segundo.

Usando rsync con FAT32

FAT32 es limitado en términos de timestamps, con baja precisión, no almacena la hora de acceso y presenta problemas de zona horaria. Estas características lo hacen inadecuado para escenarios donde la precisión temporal es crucial, como en copias de seguridad o sincronización de archivos.

Para ejecutar rsync con FAT32 preservando timestamps, use el comando:

$ bash

rsync -rtv --modify-window=1 /origen/ /destino/

La opción --modify-window=1 instruye a rsync a considerar los timestamps iguales si la diferencia entre ellos es de hasta 1 segundo. Si el comando no funciona con ese valor, intente usar 2 segundos. Siempre ejecute el comando nuevamente para verificar si los archivos serán transferidos en la segunda ejecución; se copiarán solo si rsync falla al verificar el timestamp.

Use el parámetro --size-only

Si no necesita preservar las marcas de tiempo y desea evitar problemas relacionados con la precisión, utilice la opción --size-only. Esto hace que rsync considere sólo el tamaño de los archivos al decidir si un archivo debe ser copiado.

$ bash

rsync -rv --size-only /origen/ /destino/

Tenga en cuenta que los parámetros -t y --modify-window fueron removidos del comando, ya que se usan para manejar timestamps y son incompatibles con la opción --size-only, que desactiva la verificación de timestamps.

Conclusión

Al usar rsync con sistemas de archivos NTFS o FAT32, es crucial prestar atención a las opciones de montaje de las particiones, ya que los permisos y propiedades de archivos son limitaciones de estos sistemas. Parámetros como --modify-window y --size-only ayudan a sortear problemas de precisión de timestamps y garantizan una sincronización más eficiente.

Referencias

La página del manual (man page) de rsync fue consultada en la elaboración de este artículo.

Tablón de Anuncios

Este no es mi idioma original y no lo hablo muy bien. Utilicé mis pocos conocimientos y herramientas de traducción para redactar el texto de este artículo. Disculpe los posibles errores ortográficos o gramaticales, se agradecen sugerencias de correcciones y se pueden enviar al correo electrónico de contacto que se encuentra en el pie de página del sitio. Mi intención es compartir algunos conocimientos y espero que esta traducción sea lo suficientemente buena.


Algunos de los contenidos de este sitio web, incluidos textos, imágenes, gráficos y otros materiales, pueden ser generados o mejorados mediante herramientas de inteligencia artificial (IA). Para obtener más detalles sobre nuestro uso de IA, consulte nuestro Término de uso.

Anuncio
Índice
Anuncio