Actualmente 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 hace larga, esto parece estar en algún lugar alrededor de 255 caracteres.
Este problema se aborda en los foros de cwrsync aquí y supuestamente se puede solucionar en algún momento en el futuro cuando salga cygwin 1.7 y se admita UTF8. Incluso hay una versió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 rsync.
Como alternativa a rsync, ¿conoce otra herramienta que pueda copiar una estructura de directorio en Linux desde un host de Windows que no tenga problemas con archivos largos o con nombres inusuales? Lo importante es que necesito una herramienta que pueda funcionar fácilmente en 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.
fuente
Respuestas:
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 superar escribiendo un archivo por lotes para la copia y luego creando una tarea programada. Robocopy es gratis y extremadamente robusto. A menudo lo uso para copiar archivos entre Linux y Windows usando Samba y la red, y la capacidad de reanudar de Robocopy es realmente poderosa.
fuente
¡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 de / cygdrive / x / lo que sea. Esto funciona tanto en el extremo del cliente como en el extremo del servidor.
Ahora, si bien puede usar sustitutos estratégicos para reducir la longitud de los nombres de archivo, no sé si esto le permite omitir el límite de 260 caracteres. También puede no ser muy conveniente. Vale la pena intentarlo.
John Rennie
---- 8 <----
Ver 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 el rsync de Cygwin por 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
fuente
Te sugiero que pruebes Unison http://www.cis.upenn.edu/~bcpierce/unison/
Es una alternativa muy interesante a rsync porque también puede proporcionar sincronización bidireccional (que rsync no puede hacer). Ya lo he usado con éxito en 2 máquinas virtuales y quedé muy satisfecho con los resultados.
Pero en lo que respecta al nombre de archivo largo, no sé si funciona como desea.
Desde el sitio web oficial:
fuente
Solo una nota de que me encuentro con el mismo problema (limitaciones de pre-1.7 cygwin) 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 los foros de cwrsync)
No es exactamente una compilación oficial, pero resolvió mis problemas de juego de caracteres :)
fuente
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 del camino. Según su autor, si desea utilizar más caracteres, puede subir la constante en el parche. Eso parece aún más hackish.
Probablemente no sea su mejor opción para la sincronización remota, pero es un rsync de Windows que dice admitir nombres de archivo más largos.
fuente
Entonces, si las herramientas son malas en Windows, ¿hay alguna manera de usar la herramienta Linux?
Con ssh - sshfs ?
Sin ssh: ¿usar una VPN y montar como SMB?
De cualquier manera, le permitiría usar el cliente rsync Linux más capaz contra un sistema de archivos. No he hecho esto con 10 GB de datos, así que YMMV. :)
fuente
Esto no hará grandes estructuras de archivos, pero para conjuntos de datos relativamente pequeños con nombres largos, puede considerar usar algo como 7-Zip para crear un archivo que luego pueda transferir rsync. Dijiste que necesitas extraer datos de los servidores de Windows a un servidor de Linux. Si tiene acceso de 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.
fuente
Para no perder la portabilidad, le recomendaría que permanezca con rsync e intente resolver la limitación 255. Esta limitación ya no está dentro de Windows y está en el código RSYNC; de hecho, el límite en Windows es alrededor de 2048 ahora (si no recuerdo mal).
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 muy buena función de duplicación pero no se compara con rsync cuando se trata de copia de seguridad / sincronización.
fuente
Me corté juntos un script que puede renombrar temporalmente los archivos o directorios con nombres más cortos para que rsync (y otros programas) pueden proceder. Puede usar esto como parte de la cadena de herramientas que está usando para copiar archivos de Linux a Windows (rsync o de otro modo). No sé qué quiere decir con "inusual", por lo que quizás esto solo aborde una parte de sus requisitos. Avíseme si es útil para usted.
fuente