11Aug

IT Geek: bestanden met dezelfde naam synchroon houden

U hebt waarschijnlijk gehoord van diensten, zoals Dropbox, die worden gebruikt om bestanden gesynchroniseerd te houden over meerdere machines. Maar wat als u deze bewerking op één enkele machine wilt uitvoeren? Dat wil zeggen, houd bestanden met dezelfde bestandsnaam synchroon over de machine, zodat wanneer een van de bestanden verandert, deze allemaal worden bijgewerkt.

Deze functionaliteit kan best nuttig zijn, vooral voor ontwikkelaars of systeembeheerders waar soms duplicatie van bestanden vereist is.

Hoe het werkt

Stel dat u een webontwikkelaar bent die in de loop van de tijd een mooie verzameling Javascript-functies heeft samengesteld die u op alle door u beheerde sites gebruikt. Terwijl je dit Javascript-bestand toevoegt of verbetert( laten we het "library.js" noemen), wordt alleen de huidige kopie die je aan het bewerken bent bijgewerkt. Dit zou bijvoorbeeld betekenen dat als u een bugfix of -verbetering maakt, u deze handmatig ook moet toepassen op de broncodemap van uw andere sites.

Onze tool probeert het probleem op te lossen dat handmatig het bijgewerkte bestand moet worden toegepast op elke bronmap. Wat het doet:

  1. Zoekt naar alle bestanden met een opgegeven naam( library.js) binnen een opgegeven hoofdmap( % UserProfile% \ Documents \ Web Sites).
  2. Voor alle bestanden met de naam library.js zoekt het de laatst gewijzigde en noteert de hash-waarde van het bestand.
  3. Alle andere bestanden met de naam library.js( die niet de meest recente bijgewerkte kopie zijn) hebben dan hun hash-bestandsgrootte vergeleken met de meest recente( bepaald in de vorige stap).
  4. Als de hash-waarden van het bestand verschillen, wordt de betreffende kopie van library.js vervangen door de laatst bijgewerkte kopie.

Omdat we hash-waarden gebruiken om de bestanden te vergelijken, zijn we er zeker van dat de vervangen bestanden inderdaad anders zijn dan de meest recente kopie. Als u bijvoorbeeld het proces zou uitvoeren en er 5 bestandsvervangingen zijn gemaakt, zou het onmiddellijk opnieuw uitvoeren van het proces geen vervanging zijn omdat de hash-waarden van het bestand nu identiek zijn.

Update voor de nieuwste kopieertoepassing

De update naar de nieuwste kopieertool is een aangepaste versie van een batchtype met dezelfde naam( beide kunnen worden gedownload via de links onderaan het artikel) die is geconverteerd naar een EXE-bestandom het vereiste hulpprogramma Nirsoft HashMyFiles op te nemen. Het hulpprogramma moet worden uitgevoerd vanaf de opdrachtregel met bepaalde parameters gespecificeerd. Als u het EXE-bestand gewoon zou moeten uitvoeren door te dubbelklikken, krijgt u een bericht dat dit aangeeft.

Als u Update naar de nieuwste kopie wilt gebruiken, kunt u de parameters bekijken door "UpdateToNewestCopy /?" Uit te voeren. Dit toont het volgende dialoogvenster:

De enige vereiste parameters zijn de SourceFolder( bijv.% UserProfile% \ Documents \ Web Sites) en de bestandsnaam( bibliotheekJs).U kunt de functionaliteit echter wijzigen door extra schakelaars toe te voegen, zoals hierboven beschreven.

Voorbeelden

De volgende opdracht vindt alle bestanden met de naam "Common.vb" in de map "C: \ users \ jfaulkner \ documents \ Code Files" en voert de vervanging uit, maar maakt een back-up van de huidige kopie voordat deze wordt overschreven( deze uitvoer iswat heeft de bovenste afbeelding voor dit artikel opgeleverd):

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

De volgende opdracht voert dezelfde zoekactie uit als hierboven, maar het rapporteert alleen over bestanden die zoudenworden vervangen en voert geen enkele bestandsbewerking uit:

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

Stel dat er een bestand met de naam "C: \ Config \ FilesToSearch.txt" is met deinhoud:

library.js
Common.vb

De volgende opdracht zoekt in de map Mijn documenten van de huidige gebruiker en rapporteert over updates voor "library.js" en "Common.vb", maar zou niet echt pvoer update-operaties uit:

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

Automatiseren van het proces

Dit proces is een ideale kandidaat voor automatisering. Door een geplande taak te maken( niets speciaals vereist) met de gespecificeerde instellingen en deze dagelijks om de 15 minuten( afhankelijk van uw vereisten) /hourly/ te laten uitvoeren, kunt u bestanden op ware set-it-and-forget-it-wijze laten synchroniseren.

Download

-update naar nieuwste kopie - gewijzigd uitvoerbaar formaat

Update voor de nieuwste kopieer - bronbatchbestanden( meer op opdrachtregel georiënteerd)