it-swarm-pt.tech

Windows rsync que suporta nomes de arquivo longos ou uma boa alternativa?

Eu atualmente rsync em um host Linux para copiar coisas do Windows para a minha caixa Linux. Mas não consigo copiar arquivos com nomes longos.

Eu tentei DeltaCopy , cwrsync e cygwin . Pelo que descobri lá, todas essas ferramentas se recusam a copiar arquivos quando o tamanho do arquivo se torna longo, isso parece ter algo em torno de 255 caracteres.

Este problema é abordado nos fóruns cwrsync aqui e supostamente pode ser corrigido em algum momento no futuro, sempre que o cygwin 1.7 for lançado e UTF8 for suportado. Existe até uma compilação de teste aqui .

Não estou particularmente confortável usando a construção de teste em um sistema de produção. Espero que alguém conheça outra opção de rsync.

Como alternativa ao rsync, você conhece outra ferramenta que eu possa copiar uma estrutura de diretórios no Linux de um host do Windows que não terá problemas com arquivos longos ou com nomes incomuns? O importante é que preciso de uma ferramenta que funcione facilmente em um túnel SSH. Alguns dos sistemas estão além de firewalls e acredito que SSH é o túnel que terei permissão para usar.

13
Zoredache

Posso estar perdendo o ponto, mas você considerou usar Robocopy no Windows. É semelhante ao RSync, porém você não pode agendá-lo diretamente do aplicativo.

Isso pode ser superado gravando um arquivo em lote para a cópia e, em seguida, criando uma tarefa agendada. O Robocopy é gratuito e extremamente robusto. Costumo usá-lo para copiar arquivos entre Linux e Windows usando Samba e a rede, e a capacidade de retomar do Robocopy é realmente poderosa.

6
BinaryMisfit

Aha! Você pode usar subst com rsync.

Se você tiver uma árvore de diretório profunda d:\very\long\file\n\ame\etc\etc, a experiência revela que você pode substituir X: a d:\very\long\file\name\etc e rsync para e de/cygdrive/x/qualquer. Isso funciona tanto na extremidade do cliente quanto na extremidade do servidor.

Agora, embora você possa usar substs estratégicos para reduzir o comprimento dos nomes de arquivo, não sei se isso permite que você ignore o limite de 260 caracteres. Também pode não ser muito conveniente. Mas vale a pena tentar.

John Rennie.

---- 8 <----

Veja http://www.ratsauce.co.uk/notablog/LongFilenames.asp para minhas divagações sobre nomes de arquivos longos.

Não conheço nenhuma maneira de obter o prefixo \\?\Para o Cygwin e, obviamente, a versão atual do Cygwin não usa o prefixo internamente. Presumivelmente, eles estão tratando disso na nova versão e é por isso que ela suportará nomes com mais de 260 caracteres. Eu uso o Cygwin rsync em todo lugar, então como você, aguardo ansiosamente o lançamento.

Existem alguns outros problemas com o rsync Cygwin. Isso confunde as ACLs, a menos que você especifique cygwin = nontsec, e tende a travar em diretórios muito grandes. Minha lista de coisas a fazer antes de morrer é escrever uma versão nativa do rsync para Windows que não tenha esses problemas. Acredito que isso tenha sido feito, mas apenas como versões comerciais, não de domínio público.

JR

5
John Rennie

Apenas uma observação que eu encontrei o mesmo problema (limitações do cygwin pré-1.7) e encontrei uma versão funcional do cwrsync com o cygwin 1.7 aqui:

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

(Link original encontrado em fóruns cwrsync)

Não é exatamente uma versão oficial, mas resolveu meus problemas de charset :)

2
user21332

Eu sugiro que você tente Unison http://www.cis.upenn.edu/~bcpierce/unison/

É uma alternativa muito interessante ao rsync porque também pode fornecer bi-directionnal sincronização (que o rsync não é capaz de fazer). Já usei com sucesso em 2 máquinas virtuais e fiquei muito feliz com os resultados.

Mas no que diz respeito a nomes de arquivo longos, não sei se funciona como você deseja.

No site oficial:

Unison é uma ferramenta de sincronização de arquivos para Unix e Windows. Ele permite que duas réplicas de uma coleção de arquivos e diretórios sejam armazenadas em hosts diferentes (ou discos diferentes no mesmo Host), modificadas separadamente e, em seguida, atualizadas propagando as alterações em cada réplica para a outra.

2
Olivier Jaquemet

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

http://www.okisoft.co.jp/esc/utf8-cygwin/ Possui uma camada UTF8, que tem um efeito colateral de aumentar o possível tamanho do caminho. Segundo seu autor, se você quiser usar mais personagens, pode aumentar a constante no patch. Isso parece ainda mais hackeado.

Provavelmente não é sua melhor aposta para sincronização remota, mas é um rsync do Windows que afirma oferecer suporte a nomes de arquivo mais longos.

1
redblacktree

Para não perder a portabilidade, eu recomendo que você fique com o rsync e tente resolver a limitação de 255. Essa limitação não está mais dentro do Windows e está no código RSYNC - na verdade, o limite no Windows é cerca de 2048 agora (se bem me lembro).

Tenho certeza de que não há outras portas rsync além das especificadas por você e sugiro que você use a versão de teste e relate quaisquer bugs que possa encontrar.

Se você não se importa em usar o FTP, pode tentar o LFTP - ele tem um recurso de espelhamento muito bom, mas não se compara ao rsync quando se trata de backup/sincronização.

0
sorin

I hackeado um script que pode renomear temporariamente arquivos ou diretórios com nomes mais curtos para que o rsync (e outros programas) possam prosseguir. Você pode usar isso como parte da cadeia de ferramentas que está usando para copiar arquivos do Linux para o Windows (rsync ou outro). Não sei o que você quer dizer com "incomum", então talvez isso atenda apenas a uma parte de seus requisitos. Por favor, deixe-me saber se isso for útil para você.

0
taltman

Então, se as ferramentas são ruins no Windows, há uma maneira de usar a ferramenta Linux?

Com ssh - sshfs ?

Sem ssh - usar VPN e montar como SMB?

Qualquer uma das formas permitiria que você use o cliente Linux rsync mais capaz em um sistema de arquivos. Eu não fiz isso com 10 GB de dados, então YMMV. :)

0
Cawflands

Isso não fará grandes estruturas de arquivos, mas para conjuntos de dados relativamente pequenos com nomes longos, você pode usar algo como 7-Zip para criar um arquivo que o rsync possa então transferir. Você disse que precisa puxar dados de servidores Windows para um servidor Linux. Se você tiver acesso ao Shell, arquive os dados de que precisa em um container (7-Zip), transfira o container e expanda-o quando chegar ao servidor. Isso empurra o problema do nome de arquivo longo para o arquivador, para o qual acredito que haja um suporte melhor e ferramentas não Cygwin.

0
sysadmin1138