Domanda

Nonostante sia principalmente un utente Windows, sono un grande fan di rsync.Ora, non voglio discutere le virtù di rsync rispetto a qualsiasi altro strumento... non è questo il punto.

L'unico modo che ho trovato per eseguire rsync su Windows è tramite una versione creata per funzionare su Cygwin e, poiché Cygwin ha problemi con Unicode, anche rsync lo fa.

Qualcuno ha abbastanza familiarità con il funzionamento di rsync per dire se ci sono reali ostacoli tecnici di programmazione per il porting di rsync su un binario Win32 nativo?

O forse non c'è mai stato abbastanza interesse da parte degli utenti Windows per preoccuparsi di trasferirlo?

In parte lo chiedo perché sto pensando di provare ad assumermi il compito di avviare un port, ma voglio assicurarmi che non ci sia qualcosa che mi sfugge in termini del motivo per cui potrebbe non essere possibile.

È stato utile?

Soluzione

Il modo in cui Windows blocca i file aperti potrebbe causare un problema che richiede il collegamento al servizio Copia Shadow del volume.

Circa due anni fa questo tizio ha portato l'algoritmo in C#.Non ho dato un'occhiata al codice (o al binario fornito), ma potrebbe essere un posto dove iniziare a cercare o qualcuno da provare a contattare.
http://www.russiantequila.com/wordpress/?p=8

Altri suggerimenti

(disclaimer:lo prometto, non cerco io stesso su Google, ma Google Analytics mi ha portato qui)

ho eseguito il porting di rsync su .net (il collegamento di sig11 è il mio blog).non ci sono ostacoli tecnici, solo pratici.come già detto, il codice è piuttosto...denso.difficile da seguire e completa mancanza di commenti.Sono più che felice di rendere disponibile il mio lavoro, ma sfortunatamente, poiché faceva parte di uno sforzo commerciale, non è in condizioni significativamente migliori.

in diverse occasioni ho accarezzato l'idea di decodificare il protocollo e realizzare un'implementazione da zero che sia compatibile via cavo con quella esistente, ma...un po' più pulito con cui lavorare.ho anche avviato una wiki in tal senso, ma...come puoi vedere dalla mancanza di contenuti, altri elementi hanno avuto la priorità.se qualcuno volesse lavorare con me su questo, potrebbe essere lo slancio di cui ho bisogno per andare avanti.

il concetto dello strumento è ottimo, così come le funzionalità che offre, tuttavia è piuttosto limitato al di fuori dello spazio *ix e potrebbe sicuramente trarre vantaggio da un'API.

collegamento wiki per riferimento:

http://www.russiantequila.com/wiki/index.php?title=Main_Page

Hai visto questo:

http://www.itefix.no/i2/taxonomy/term/39

Ho usato cwrsync senza alcun problema (e con la solita miseria di Cygwin), ma non ho avuto bisogno di nomi di file Unicode, quindi non ho riscontrato questo problema.

Non so davvero perché non esista un port Win32 nativo, ma ho guardato il sorgente qualche tempo fa perché ho implementato un sistema di copia delta simile in C#.Come ci si aspetterebbe dal mondo dei brillanti hacker *nix, la fonte è in gran parte costituita da nomi di variabili a carattere singolo e da una totale assenza di commenti, il che non è molto utile e potrebbe essere piuttosto scoraggiante per gli aspiranti porter.

Sto valutando anche un tentativo di intraprendere un porting su Win32.Non credo che nulla di importante lo bloccherebbe, ma le prove di entrambi lista di posta di rsync e un'altra discussione punta a una forte dipendenza dalle chiamate di sistema unix fork().L'uso dei thread sembra la strada da percorrere per Win32.

Discussioni controDiscussione sulla forcella

Apprezzerei davvero un port di rsync su MS-Windows in modo che possa essere creato utilizzando Visual Studio.Riscontro vari errori di protocollo in modo casuale, in modo piuttosto intermittente.Sto utilizzando rsync per distribuire il software su una griglia di circa 200 macchine e in genere ottengo circa una dozzina di errori.Sto usando GCC 4.4.2 e l'ultimo cygwin per creare rsync v3.0.7.Mi aiuterebbe molto se potessi sperimentare una versione che non richieda Cygwin.Questo perché le macchine nella griglia hanno già in esecuzione un'altra app basata su Cygwin che è una versione diversa da quella che ho.

Avendo trascorso un po' di tempo sulla mailing list rsynv, l'opinione sembra essere divisa riguardo alla causa degli errori di protocollo su MS-Windows.Alcuni dicono che si tratti di un bug in rsync per il quale non è riuscito a eseguire uno spegnimento pulito del socket, un bug che è stato corretto qualche tempo fa.Altri dicono che si tratta di un errore fondamentale del protocollo in rsync in cui il client non dice al server che ha finito, si spegne semplicemente, facendo sì che i server MW-Windows ricevano un segnale RST sul socket, cosa che non accade su Unix .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top