Autore Topic: controllare differenza fra file  (Letto 574 volte)

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
controllare differenza fra file
« il: 27 Settembre 2010, 14:26:16 »
cioa raga

con il seguente comando creo delle copie di backup del database:
Citazione
SHELL ("mysqldump -u " & myuser & " -p" & mypassword & " --opt " & mynomedb & " > " & mypath & "/" & myfile)

spesso funziona ma a volte mi crea un file vuoto, ora dopo Shell vorrei mettere del codice che controlli i due file e mi avvisi se trova delle differenze oppure se il secondo è vuoto.

Edit: mi sono dimenticato di precisare che non si tratta di un normale confronto far due file. in quanto l'origine non è un file normale ma un database mysql.
« Ultima modifica: 27 Settembre 2010, 14:32:44 da dex »

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: controllare differenza fra file
« Risposta #1 il: 28 Settembre 2010, 10:29:33 »
Mica ho capito cosa vuoi fare... oppure forse ho capito fin troppo bene...  :rolleyes:

Una volta che hai generato il file dump, dato che lo hai esportato in formato ascii, quindi il contenuto sono comandi sql, il controllo se è vuoto è molto semplice, sia con Gambas che da sistema operativo.

Quello che immagino poi vuoi fare, è fare la verifica che il backup sia completo rispetto a al database stesso.
Fare una cosa del genere, partendo da un file sql, è piuttosto arzigogolata, non credi?
Tu puoi fare i confronti tra due file, o il contenuto di directory, tramite comandi appositi (il primo che mi viene in mente è diff), ma farlo su due strutture diverse è impossibile.
Inoltre, con gli opportuni parametri, mysqldump blocca temporaneamente le funzionalità del database, appunto per consentire l'estrazione di dati congrui. Una volta terminato, però, non hai più modo di garantire confronti con l'estrazione appena fata, dati che il database ritorna in linea, con le relative alterrazioni che questo comporta.
Dato che mysqldump è uno strumento incluso nel package mysql, io credo tu debba fidarti del fatto che questo funzioni a prescindere. In alternativa, devi andarti a pescare strumenti più complessi, che garantiscano al 100%, in qualsiasi modo e momento, che i backup vengano completati sempre con successo. Di solito questi strumenti sono commerciali, dato che si tratta di mysql.
« Ultima modifica: 28 Settembre 2010, 10:32:26 da md9327 »

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re: controllare differenza fra file
« Risposta #2 il: 28 Settembre 2010, 23:02:31 »
immaginavo che sarebbe stato complesso fare il controllo, se si fosse trattato di 2 file mi bastava un MD5.

il fatto è che in 2 occasioni mysqldump mi ha generato un file vuoto,  il quale trasportato alla sede centrale e ripristinato sul database ha cancellato anche i vecchi dati.

Attualmente controllo dal sistema se il file non è vuoto, se volessi farlo da gambas?

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: controllare differenza fra file
« Risposta #3 il: 29 Settembre 2010, 00:28:50 »
Un bel "File.Load()"... ti controlli le dimensioni del testo che ti ritorna.

Oppure, ancora meglio, uno "Stat", metodo "Size", per verificare le dimensioni del file...