Ciao, e grazie per aver pubblicato il tuo script.
Come ho già detto sto lavorando da windows, per testare se il sistema è in ordine e quale software devo installare (il fine ècapire più o meno quanto spazio devo dedicare alla sua partizione... ma questa è un'altra storia).
Ho googolato un po' per cpaire se sia possibile usare rsync (l'originale) sotto windows. Ho visto diversi progetti che ne includerebbero però un'interfaccia, non ho approfondito troppo, per esempio cwrsync e altri.
Poi ho letto qualche guida sulla possibilità di scaricare pachetti dal repository cygwin al fine di creare un pacchetto essenziale per usare rsync e ssh... adesso non ricordo il link, ma è tra i primi risultati di google.
Allora mi sono detto, potrei crearmi un "pacchetto" con il solo rsync.
Non ho ancora testato nulla, ma alla fine l'eseguibile gira senza errori di dipendenze mancanti.
Come fare:
0- Praticamente occorre fare una directory comprensiva di tutti i files eseguibili e librerie necessare per farli funzionare.
Prendiamo i files necessari dal repository di cygwin, io ho usato tutte le versioni più recenti dei vari files, da uno dei tanti mirrors.
Per trovare i vari files è comodissimo questo motore di ricerca:
http://cygwin.com/packages/
oppure anche la chiave di rcerca
accompagnata dal nomedel file che ci manca.
1- Iniziamo con rsync, immettendo "rsync" nel motore di ricerca oteniamo:
http://cygwin.com/cgi-bin2/package-grep.cgi?grep=rsync
Che present un bel po' di roba tra cui il pacchetto rsync-versionepiùrecente.
Diamo un'occhiata a cosa contiene il pacchetto: provenendo da slackware tutto sembra piuttosto semplice da capire.
http://cygwin.com/cgi-bin2/package-cat. ... grep=rsync
In pratica saremo tutti d'accordo che ci basta:
Ok, scarichiamolo allora dal mirror scelto, per esempio:
http://ftp.univie.ac.at/packages/cygwin/release/rsync/
Se date un'occhiata al link, noterete che vi è in quella directory un file chiamato:
http://ftp.univie.ac.at/packages/cygwin ... setup.hint
Contiene ovviamente info sull'installazione di rsync, particolarmente utile è la riga:
Il che ci dice che per far girare rsync.exe che stiamo scaricando, occorreranno anche le librerie di dipendenza sopracitate.
2- scaricato rsync.exe, possiamo provare a lanciarlo e vederecosa manca.
ci viene detto che manca un file fondamentale cygwin1.dll. E' l alibreria fondamentale per far parlare i programmi di cygwin col sistema windows. Lo cerchiamo sempre col motore di ricerca sopra e lo scarichiamo dal mirror nella stessa directory in cui abbiamo rsync.exe.
3- riproviamo a lanciare l'eseguibile rsync.exe dal prompt del dos o con doppio click, penso sia la stessa cosa. Non funge perchè sta volta mancherà il file cygiconv-2.dll. Ne avevamo già il sospetto osservando il file "setup.hint" di rsync.
Quindi cechiamo e scarichiamo quel file nella nostra dir di lavoro. E facciamo lo stesso per gli altri assenti che nell'esempio di rsync saranno:
- cyggcc_s-1.dll
- cygpopt-0.dll
Ah... non ho detto che i files sono in pacchetto tar.bz2, quindi scarichiamo i pacchetti compressi ed estraiamo poi i files che ci servono, io ho usato 7zip in windows.
Ok. Insomma alla fine avremo la nostra directory che io ho chiamato rsync-files come segue
Codice: Seleziona tutto
G:\software-newwin\utilities\rsync\rsync-files>dir
Il volume nell'unità G non ha etichetta.
Numero di serie del volume: 7C80-7757
Directory di G:\software-newwin\utilities\rsync\rsync-files
14/12/2010 11.15 <DIR> .
14/12/2010 11.15 <DIR> ..
13/08/2010 03.44 83.470 cyggcc_s-1.dll
23/12/2009 14.33 1.005.582 cygiconv-2.dll
09/06/2002 06.50 22.528 cygpopt-0.dll
31/08/2010 09.00 2.648.181 cygwin1.dll
19/02/2010 20.20 356.878 rsync.exe
5 File 4.116.639 byte
2 Directory 165.013.258.240 byte disponibili
Voglio far notare il volume della directory... 4 MB di roba. Sì per ottenerla ne avremo scaricato qualcosina in più ma non di molto. Questo rispetto all'installazione di un ambiente cygwin completo...
Con slackware per installare il software non si fa in modo troppo diverso.
Il risultato è ilseguente:
Codice: Seleziona tutto
G:\software-newwin\utilities\rsync\rsync-files>rsync.exe --version
rsync version 3.0.7 protocol version 30
Copyright (C) 1996-2009 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
64-bit files, 64-bit inums, 32-bit timestamps, 64-bit long ints,
socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
append, ACLs, xattrs, iconv, symtimes
rsync comes with ABSOLUTELY NO WARRANTY. This is free software, and you
are welcome to redistribute it under certain conditions. See the GNU
General Public Licence for details.
Quindi alla fine sembra funzionare o almeno non dà errori relativi alla mancanza di qualcosa.
Va ovviamente testato meglio direi. Però se non altro l'idea potrebbe essere interessante, e non solo per rsync, ma più in generale per il porting di applicazioni unix sotto windows, senza mettere in piedi il completo cygwin.
Va notato che l'eseguibile .exe deve andare a pescare le librerie necessarie .dll nella directory di lavoro e non nel sistema, dove potrebbero esserci (specie se si ha un ambiente cygwin già installato) omonime librerie ma di versioni diverse magari non compatibili con la versione dell'eseguibile scaricato.
La gestione sul sistema windows:purtroppo non so costruire pacchetti per windows da integrare poi con il tool installazione applicazioni. Pertanto direi che questa versione "portabile" di rsync può essere installata dove si vuole c:\programmi\rsync-versione per esempio oppure anche lasciata dove si vuole.... insomma non è così indispensabile. Io non ho idea di come fare un installer per questo "pacchetto" ma se non è difficile e aveste voglia di spiegarlo sicuramente non guasterebbe.
Farò sapere come funziona:
a questo proposito, con wget ho ormai terminato di scaricare il ramo stabile di slackware-13.1 escludendo come già detto le directories:
testing
source
extra/source
pastures/source
pathces/source
Scompiazzando dallo scirpt di ansa89 presente nel wiki e volendo verificare praticamente che ci sia tutto e che sia tutto aggoirnato con un server rsync come posso fare per sincronizzare esattamente il mio ramo loacale /path/slackware-13.1/ con quello remoto, in modo che
1- tutti i files remoti più recenti di quelli locali, sovrascrivano quelli locali
2- tutti i files locali uguali a quelli remoti non vengano riscaricati
3- files locali in più tipo ".list" scaricati da wget vengano cancellati in quanto non presenti sul repo remoto (server rsync)
Andrebbe bene il comando seguente?
Codice: Seleziona tutto
rsync -avzh --progress --delete --delete-after \
--exclude="source" \
--exclude="extra/source" \
--exclude="pasture/source" \
--exclude="testing" \
--exclude="patches/source" \
$RSYNC_URL/slackware-13.1/ $LOCAL_PATH/slackware-13.1/
E' davvero tutto, scusate la lunghezza del post, spero nella vostra pazienza.
