it-swarm-es.com

¿Windows rsync que admite nombres de archivo largos o una buena alternativa?

Actualmente hago rsync en un host de Linux para copiar cosas de Windows a mi caja de Linux. Pero no puedo copiar archivos con nombres largos.

He intentado DeltaCopy , cwrsync y cygwin . Por lo que he encontrado allí, todas estas herramientas se niegan a copiar archivos cuando la longitud del archivo se vuelve larga, esto parece estar alrededor de 255 caracteres.

Este problema se aborda en los foros de cwrsync aquí y, supuestamente, se puede solucionar en el futuro siempre que cygwin 1.7 salga y se admita UTF8. Incluso hay una compilación de prueba aquí .

No me siento particularmente cómodo usando la versión de prueba en un sistema de producción. Espero que alguien sepa de otra opción de rsync.

Como alternativa a rsync, ¿conoce otra herramienta que pueda copiar una estructura de directorio en Linux desde un host de Windows que no tendrá problemas con archivos largos o con nombres inusuales? Lo importante es que necesito una herramienta que pueda funcionar fácilmente a través de un túnel SSH. Algunos de los sistemas están más allá de los firewalls y creo que SSH es el túnel que se me permitirá usar.

13
Zoredache

Puede que me esté perdiendo el punto, pero ¿ha considerado usar Robocopy en Windows? Es similar a RSync, sin embargo, no puede programarlo directamente desde la aplicación.

Esto se puede solucionar escribiendo un archivo por lotes para la copia y luego creando una tarea programada. Robocopy es gratuito y extremadamente robusto. A menudo lo uso para copiar archivos entre Linux y Windows usando Samba y la red, y la capacidad de reanudación de Robocopy es realmente poderosa.

6
BinaryMisfit

¡Ajá! Puede usar subst con rsync.

Si tiene un árbol de directorios profundo d:\very\long\file\n\ame\etc\etc, entonces el experimento revela que puede sustituir X: a d:\very\long\file\name\etc y luego rsync a y desde/cygdrive/x/lo que sea. Esto funciona tanto en el cliente como en el servidor.

Ahora bien, si bien puede usar substs estratégicos para reducir la longitud de los nombres de archivo, no sé si esto le permite omitir el límite de 260 caracteres. Puede que tampoco sea muy conveniente. Aunque vale la pena intentarlo.

John Rennie.

---- 8 <----

Consulte http://www.ratsauce.co.uk/notablog/LongFilenames.asp para mis divagaciones sobre nombres de archivo largos.

No conozco ninguna forma de obtener el prefijo \\?\Para Cygwin, y obviamente la versión actual de Cygwin no usa el prefijo internamente. Presumiblemente, están abordando esto en la nueva versión y es por eso que admitirá nombres de más de 260 caracteres. Utilizo Cygwin rsync en todas partes, así que, como tú, espero ansiosamente el lanzamiento.

Hay algunos otros problemas con Cygwin rsync. Hace un lío de ACL a menos que especifique cygwin = nontsec, y tiende a colgarse en directorios muy grandes. En mi lista de cosas que hacer antes de morir es escribir una versión nativa de Windows de rsync que no tenga estos problemas. Creo que esto se ha hecho, pero solo como versiones comerciales, no de dominio público.

JR

5
John Rennie

Solo una nota de que me encuentro con el mismo problema (limitaciones de cygwin pre-1.7) y encontré una compilación funcional de cwrsync con cygwin 1.7 aquí:

http://www.doering-thomas.de/page.php?seite=1&sub=6&lang=en#rsync

(Enlace original encontrado en foros de cwrsync)

No es exactamente una compilación oficial, pero resolvió mis problemas con el juego de caracteres :)

2
user21332

Le sugiero que intente Unison http://www.cis.upenn.edu/~bcpierce/unison/

Es una alternativa muy interesante a rsync porque también puede proporcionar ¡bidireccional sincronización (que rsync no puede hacer). Ya lo he usado con éxito en 2 máquinas virtuales y estoy muy contento con los resultados.

Pero en lo que respecta al nombre de archivo largo, no sé si funciona como desea.

Desde el sitio web oficial:

Unison es una herramienta de sincronización de archivos para Unix y Windows. Permite que dos réplicas de una colección de archivos y directorios se almacenen en diferentes hosts (o diferentes discos en el mismo Host), se modifiquen por separado y luego se actualicen propagando los cambios de cada réplica a la otra.

2
Olivier Jaquemet

http://lists.samba.org/archive/rsync/2009-March/022955.html

http://www.okisoft.co.jp/esc/utf8-cygwin/ Tiene una capa UTF8, que tiene el efecto secundario de aumentar el posible tamaño de la ruta. Según su autor, si quieres usar más personajes puedes subir la constante en el parche. Eso parece aún más hack.

Probablemente no sea su mejor opción para la sincronización remota, pero es un rsync de Windows que afirma admitir nombres de archivo más largos.

1
redblacktree

Para no perder la portabilidad, le recomendaría que se quede con rsync y trate de resolver la limitación 255. Esta limitación ya no está dentro de Windows y está en código RSYNC; de hecho, el límite en Windows ahora es alrededor de 2048 (si mal no recuerdo).

Estoy bastante seguro de que no hay otros puertos rsync que los especificados por usted y le sugiero que use la versión de prueba e informe cualquier error que pueda encontrar.

Si no le importa usar FTP, puede probar LFTP; tiene una función de duplicación muy buena, pero no se compara con rsync cuando se trata de copia de seguridad/sincronización.

0
sorin

I hackeé un script que puede cambiar temporalmente el nombre de archivos o directorios con nombres más cortos para que rsync (y otros programas) puedan continuar. Puede usar esto como parte de la cadena de herramientas que está usando para copiar archivos de Linux a Windows (rsync o de otro tipo). No sé qué quiere decir con "inusual", por lo que quizás esto solo aborde una parte de sus requisitos. Por favor, avíseme si le resulta útil.

0
taltman

Entonces, si las herramientas son malas en Windows, ¿hay alguna forma de usar la herramienta de Linux?

Con ssh - sshfs ?

Sin ssh: ¿usar una VPN y montar como SMB?

De cualquier manera le permitiría usar el cliente rsync de Linux más capaz contra un sistema de archivos. No he hecho esto con 10 GB de datos, así que YMMV. :)

0
Cawflands

Esto no funcionará con estructuras de archivos grandes, pero para conjuntos de datos relativamente pequeños con nombres largos, podría usar algo como 7-Zip para crear un archivo que luego rsync podría transferir. Dijiste que necesitas extraer datos de los servidores de Windows a un servidor Linux. Si tiene acceso a Shell, archive los datos que necesita en un contenedor (7-Zip), transfiera el contenedor y amplíelo cuando llegue al servidor. Esto empuja el problema del nombre de archivo largo al archivador, para lo cual creo que hay un mejor soporte y herramientas que no son de Cygwin.

0
sysadmin1138