11Aug

Geek IT: come mantenere i file con lo stesso nome in sincronizzazione

Probabilmente avete sentito parlare di servizi, come Dropbox, che vengono utilizzati per mantenere i file sincronizzati su più macchine. Tuttavia, cosa succede se si desidera eseguire questa operazione su una singola macchina? Cioè, mantenere i file che hanno lo stesso nome di file sincronizzati attraverso la macchina in modo tale che quando uno dei file cambia, vengono tutti aggiornati.

Questa funzionalità può essere molto utile, specialmente per gli sviluppatori o gli amministratori di sistema dove talvolta è richiesta la duplicazione dei file.

Come funziona

Supponiamo che tu sia uno sviluppatore web che, nel corso del tempo, ha messo insieme una bella raccolta di funzioni Javascript che usi in tutti i siti che gestisci. Quando aggiungi o migliora questo file Javascript( chiamiamolo "library.js"), viene aggiornata solo la copia corrente che stai modificando. Ciò significherebbe, ad esempio, se si apportano correzioni o miglioramenti di bug, si dovrebbe andare manualmente ad applicarlo anche a ciascuna cartella del codice sorgente degli altri siti.

Il nostro strumento tenta di risolvere il problema di dover andare manualmente ad applicare il file aggiornato a ciascuna cartella sorgente. Che cosa fa:

  1. Cerca tutti i file con un nome specificato( library.js) all'interno di una cartella principale specificata( % UserProfile% \ Documents \ Web Sites).
  2. Per tutti i file denominati library.js, individua quello che è stato modificato più di recente e prende nota del valore hash del file.
  3. Tutti gli altri file denominati library.js( che non sono la copia aggiornata più recente) hanno quindi il loro valore hash del file confrontato con il più recente( determinato nel passaggio precedente).
  4. Se i valori di hash del file sono diversi, la rispettiva copia di library.js viene sostituita con la copia aggiornata più recentemente.

Poiché utilizziamo valori di hash per confrontare i file, siamo certi che qualsiasi file sostituito è effettivamente diverso dalla copia più recente. Ad esempio, se si eseguisse il processo e fossero state eseguite 5 sostituzioni di file, l'esecuzione del processo subito dopo non avrebbe apportato alcuna sostituzione poiché i valori dell'hash del file ora sono identici.

Aggiornamento allo strumento di copia più recente

L'aggiornamento allo strumento Copia più recente è una versione modificata di uno script batch con lo stesso nome( entrambi sono disponibili per il download utilizzando i collegamenti nella parte inferiore dell'articolo) che è stato convertito in un file EXEper includere l'utility Nirsoft HashMyFiles richiesta. Lo strumento deve essere eseguito dalla riga di comando con determinati parametri specificati. Se si dovesse semplicemente eseguire il file EXE facendo doppio clic, verrà visualizzato un messaggio che lo indica.

Per utilizzare l'aggiornamento alla più recente copia, è possibile visualizzare i parametri eseguendo "UpdateToNewestCopy /?" Che mostra la seguente finestra di dialogo:

Gli unici parametri richiesti sono SourceFolder( ad esempio% UserProfile% \ Documents \ Web Sites) e FileName( libreriajs).Tuttavia, è possibile modificare la funzionalità aggiungendo ulteriori opzioni come descritto sopra. Esempi

Il seguente comando troverà tutti i file denominati "Common.vb" nella cartella "C: \ users \ jfaulkner \ documents \ Code Files", eseguendo la sostituzione ma eseguendo un backup della copia corrente prima di sovrascriverlo( questo output ècosa ha prodotto l'immagine in alto per questo articolo):

UpdateToNewestCopy "C: \ users \ jfaulkner \ documents \ Code Files" Common.vb / B

Il seguente comando esegue la stessa azione di ricerca di cui sopra, tuttavia riporta solo i file che verrebberoessere sostituito e in realtà non esegue alcuna operazione di file:

UpdateToNewestCopy "C: \ users \ jfaulkner \ documents \ Code Files" Common.vb / V

Si supponga che esista un file denominato "C: \ Config \ FilesToSearch.txt" conseguente contenuto:

library.js
Common.vb

Il seguente comando cerca nella cartella my documents dell'utente corrente e segnala eventuali aggiornamenti a "library.js" e "Common.vb", ma in realtà non performare qualsiasi operazione di aggiornamento:

UpdateToNewestCopy "% UserProfile% \ Documents" "C: \ Config \ FilesToSearch.txt" / L / V

Automazione del processo

Questo processo è un candidato ideale per l'automazione. Creando un'attività pianificata( niente di speciale richiesto) con le impostazioni specificate e facendola eseguire quotidianamente /hourly/ ogni 15 minuti( a seconda delle esigenze), è possibile mantenere i file sincronizzati in modalità true set-it-and-forget-it.

Scarica

Aggiornamento al più recente formato eseguibile con copia modificato

Aggiornamento alla più recente copia - file batch di origine( più orientato alla riga di comando)