Newsgroup: it.comp.lang.visual-basic
Titolo: [Leggero spam] Sincronizzazione e bkup

 Wow, ragazzi oggi ho trovato un freeware veramente carino e ben fatto,
lavora bene lo sto testando e anche se ci mette un po per i grossi volumi
lavora molto meno di cpu. Ottimo per sincornizzazioni notturne tra le sedi o
bkup di file server
il link e' questo, se vi interessa clikkate, e' ottimo e free... rientra nei
termini dello spam ? non credo !
http://www.g2kweb.it/?1168
-- 
[Gigio2k]
http://www.g2kweb.it
[ it-alt.comp.hardware.modding ] - 
http://www.g2kweb.it/ichm

 bkup di file server
Allora dà un'occhiata anche al mio (DSyncronize), ora implementa anche la
sincronizzazione in Real-Time (realizzata anche grazie ai thread sulla
"ReadDirectoryChangesW" su questo ng  :-)
Non richiede installazione, non tocca il registro e sono solo 50 Kb di
download.
P.S.
La sincronizzazione Real-Time è ancora sperimentale (a me per ora funziona,
ma non mi ci giocherei la reputazione ;-)
Link: 
http://whiteforest.altervista.org/dimiopage/

 Allora dà un'occhiata anche al mio (DSyncronize)
wow :)
Pensate che proprio mentre venivo al lavoro stavo pensando "mi servirebbe un
programma che mi facesse i backup in rete (tanto per copiare i files su pc
differenti e non solo sul server).
Interessante anche il DShutDown ;)
Ciao

 ma non mi ci giocherei la reputazione ;-)
Uh.. ma queste sono il genere di affermazioni che fa termoPilucco quando
vuole pararsi il c*lo :P
termoPilucco
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 vuole pararsi il c*lo :P
In effetti lo scopo era quello :-))
Comunque eventuali bug report sono più che graditi...

 Link: 
http://whiteforest.altervista.org/dimiopage/
poi lo provo, ma tranquillo, uso da mesi la sincro in real time e non mi ha
mai dato probl. Solo premurati di gestire "una coda" di aggiornamento ,
perche' con file di grosse in una rete lenta, a volte ti capita che devi
aggiornare di nuovo mentre non ancora finisce a copiare il file.
-- 
- Gigio @ Work (?) -
NG: it-alt.comp.hardware.modding - Ingresso libero per gli
scartavetratori folli Site: 
http://www.g2kweb.it/ichm
Chat: #ichm 
irc.azzurra.org

 mai dato probl. Solo premurati di gestire "una coda" di aggiornamento ,
Implementata ovviamente... :-) Però i bachi sono ovunque e comunque sempre
in agguato...

 ha scritto nel messaggio
news:amBCd.14504$_E5.3...@twister2.libero.it...

Ma se sta facendo il backup di un file, e questo cambia mentre ancora non ha
finito di scrivere il backup si ferma e ricomincia oppure finisce il vecchio
e poi ricomincia con il nuovo?
E se il file cambia frequentemente (nel giro di un paio di sec)?
Continua a ricominciare la copia?
Ci sarebbe uno spreco di risorse di rete immense... dovrebbe attendere
almeno qualche secondo se si accorge di una situazione del genere.
Ciao
--
Qualunque mentecatto può scrivere codice che un computer possa capire.
I buoni programmatori scrivono codice che gli uomini possano capire.
[Martin Fowler]

 almeno qualche secondo se si accorge di una situazione del genere.
Interessante osservazione direi...
Di base proprio per limitare un inutile spreco di banda la sincronizzazione
è impostata ogni 10 sec, ma in effetti il problema non si risolve del tutto.
Forse la cosa migliore sarebbe memorizzare tutte le modifiche al FS
(eliminando i doppioni) e poi (ogni 5 min x es.) tirare le somme e
sincronizzare effettivamente.
Il fatto è che potrebbero insorgere altri problemi x es:
Sul percorso di origine viene aggiunto FILE e poi rinominato a NEWFILE.
In questo caso la sincronizzazione ritardata proverebbe ad copiare un file
ormai inesistente in origine (FILE)  e poi proverebbe a rinominarlo
(FILE--->NEWFILE).
Il risultato finale è che nessun file nè FILE nè NEWFILE si troverà in
Destinazione.
(a me è venuto in mente questo, ma sospetto che potrebbero verificarsi anche
altre combinazioni simili)
L'ideale sarebbe un algoritmo che tenga traccia di questi cambiamenti (dei
rename in particolare) e si regoli di conseguenza.
Lo implementerò sicuramente, ma intanto vorrei essere sicuro che il sistema
base della sincronizzazione real-time funzioni ;-)

 rename in particolare) e si regoli di conseguenza.
L'algoritmo dovrebbe anche tener traccia delle sole modifiche al file in
modo da limitare lo spazio occupato per il backup, che, per altro,
potrebbe anche venire compresso. Non mancano liberie gratuite per la
compressione dati.
Occorrerebbe poi prevedere un modo di mostrare all'utente le modifiche
apportate durante i vari backup al fine di gestire correttamente i
ripristini. Mi sa che ti tocca riscrivere il Visual Source Safe.
-- 
ciao, hal

 ripristini.
occorrerebbe infine prevedere *un* utente *uno* che i backup li faccia,
anzi, che sappia cosa siano :)
il famigerato dps almeno li rende obbligatori, d'ora in poi o li fanno o
firmano.

 base della sincronizzazione real-time funzioni ;-)
IMHO: questo è uno di quei casi in cui il multithreading è essenziale.
Usare più thread ti consentirebbe di avere una notifica se cambia il
nome di un file prima di copiarlo, copiarlo aprendolo in modo
esclusivo ti consentirebbe di evitare che vengano fatte modifiche al
file mentre lo copi in remoto, ecc.
In sostanza l'architettura sarebbe una cosa di questo tipo:
- Un thread scandisce l'albero delle directories, agggiungendo
   files ad una coda
- Il thread di gestione della coda avrebbe il compito di monitorare i
   files, se un nome cambia notifica vecchio nome e nuovo nome ad
   un'altra lista che li mette in coda
- Un altro thread si occupa della copia, ricevendo continuamente i
   nomi di files e controllando che nel frattempo non abbiano cambiato
   nome. In questo caso copia direttamente il file modificato
- Un ultimo thread mantiene ordinata per percorso la lista dei nomi di
   files vecchi con associati quelli nuovi.
Questo genere di struttura elimina, credo, il 99% dei problemi che
potresti avere.
Purtroppo, nonostante i bei tentativi di difesa fatti da qualcuno,
Visual Basic 6 non si presta ad un uso multi-threaded e quindi
temo che la tua unica alternativa sia l'uso di files temporanei,
però a quel punto le cose si fanno - molto - complicate...
Ciao,
Andrea

 Visual Basic 6 non si presta ad un uso multi-threaded e quindi
Purtroppo me ne sono accorto... altra ipotesi allora (senza thread), che ne
dite di:
- Chiamata di una CallBack ogni volta che un file viene modificato o cambia
nome.
La routine aggiunge la notifica ad una coda.
La routine inoltre:
1. Se in coda esistono precedenti notifiche di modifica di quel file le
cancella (in questo modo si elimina il problema dei files copiati piů
volte).
2a. Se la notifica č il rename di un file, che tutte le notifiche di
modifica precedenti e riferite a quel file vengano cancellate e sostituite
da una notifica unica messa dopo la notifica di rename stessa.
2b. Se una directory viene rinominata, cambia di conseguenza il nome anche a
tutte le notifiche precedenti che abbiano nel path il nome di quella
directory (//PCremoto/Shared/File.txt ----> //PCremoto/NewShared/File.txt):
(in questo modo si dovrebbe eliminare il problema dei rename)
- Periodicamente (ogni 30 sec - 1 min) verrebbe poi richiamata una funzione
che preleva la coda svuotandola ed effettua la sincronizzazione in base ai
cambiamenti effettuati.
P.S.
Per caso sapete se esiste un modo veloce per shiftare il contenuto di una
matrice inserendo un nuovo elemento?
Cioč quello che vorrei fare č trasformare:
Matrix (1) = "Elemento 1"
Matrix (2) = "Elemento 2"
Matrix (3) = "Elemento 3"
Matrix (4) = "Elemento 4"
Matrix (4) = "Elemento 5"
In:
Matrix (1) = "Elemento 1"
Matrix (2) = "Elemento Inserito"
Matrix (3) = "Elemento 2"
Matrix (4) = "Elemento 3"
Matrix (5) = "Elemento 4"
Io ho sempre usato un ciclo For, ma mi chiedevo se esistesse un qualche
metodo piů veloce.

 matrice inserendo un nuovo elemento?
Abbandona le matrici e usa collection (magari tipizzate). Se gli elementi 
della collection hanno chiave univoca, i tempi di accesso "per chiave" sono 
quasi pari a quelli "per indice" delle matrici, in quanto le collection 
fanno uso di tabelle hash.
hth,
Lokar

Scusate per l'ora sballata!
Lokar