11Aug

IT Geek: Hur man håller filer med samma namn i synkronisering

click fraud protection

Du har sannolikt hört talas om tjänster, till exempel Dropbox, som används för att hålla filer synkroniserade på flera maskiner. Men, om du vill utföra denna operation på en enda maskin? Det vill säga, behåll filer som har samma filnamn synkroniserat över maskinen så att när en av filerna ändras uppdateras de alla.

Den här funktionaliteten kan vara ganska användbar, särskilt för utvecklare eller systemadministratörer där det ofta krävs dubbla filer.

Hur det fungerar

Anta att du är en webbutvecklare som under tiden har sammanställt en bra samling av Javascript-funktioner som du använder över alla webbplatser du underhåller. När du lägger till eller förbättrar den här Javascript-filen( låt oss kalla den "library.js"), uppdateras bara den nuvarande kopia du redigerar. Detta skulle till exempel innebära att om du gör en buggfix eller förbättring måste du manuellt använda den på alla andra källkodsmappar i din annan webbplats.

Vårt verktyg försöker lösa problemet med att man manuellt ska tillämpa den uppdaterade filen i varje källkatalog. Vad det gör:

instagram viewer
  1. Söker efter alla filer med ett visst namn( library.js) inom en angiven rotmapp( % UserProfile% \ Documents \ Web Sites).
  2. För alla filer som heter library.js, lokaliseras den som senast ändrades och noterar sitt fil hash-värde.
  3. Alla andra filer med namnet library.js( som inte är den senaste uppdaterade kopian) har sedan sitt fil hashvärde jämfört med de senaste( bestämda i föregående steg).
  4. Om filens hashvärden är annorlunda ersätts respektive kopia av library.js med den senast uppdaterade kopian.

Eftersom vi använder ish-värden för att jämföra filerna är vi säkra på att alla filer som byts ut är verkligen annorlunda än den senaste kopian. Om du till exempel skulle köra processen och 5 filutbyten gjordes, kördes processen omedelbart efteråt, skulle det inte bli några ersättningar eftersom filen hash-värden nu är identiska.

Uppdatering till nyaste kopieringsverktyget

Uppdateringen till nyaste kopieringsverktyg är en modifierad version av ett batchskript med samma namn( båda är tillgängliga för nedladdning med länkarna längst ner i artikeln) som har konverterats till en EXE-filför att inkludera det nödvändiga Nirsoft HashMyFiles-verktyget. Verktyget måste köras från kommandoraden med vissa angivna parametrar. Om du bara skulle köra EXE-filen genom att dubbelklicka, får du ett meddelande som indikerar detta.

För att använda Uppdatering till nyaste kopia kan du visa parametrarna genom att köra "UpdateToNewestCopy /?" Som visar följande dialogruta:

De enda erforderliga parametrarna är SourceFolder( t.ex.% UserProfile% \ Documents \ Web Sites) och FileNameJs).Du kan dock ändra funktionaliteten genom att lägga till ytterligare omkopplare som beskrivits ovan.

Exempel

Följande kommando skulle hitta alla filer som heter "Common.vb" i mappen "C: \ users \ jfaulkner \ documents \ Code Files" och utför utbytet men säkerhetskopierar den aktuella kopian innan den skrivs över( den här utmatningen ärvad gav den bästa bilden för den här artikeln):

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

Följande kommando utför samma sökåtgärd som ovan, men det rapporterar bara om filer som skulleersättas och faktiskt inte utför någon filoperation:

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

Antag att det finns en fil med namnet "C: \ Config \ FilesToSearch.txt" medföljande innehåll:

library.js
Common.vb

Följande kommando skulle söka i min dokumentmapp hos den aktuella användaren och rapportera om uppdateringar till "library.js" och "Common.vb", men skulle egentligen inte pUppdatera alla uppdateringsoperationer:

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

Automatisera processen

Denna process är en idealisk kandidat för automatisering. Genom att skapa en schemalagd uppgift( inget speciellt krävs) med de angivna inställningarna och få den att köra dagligen /hourly/ var 15: e minut( beroende på dina krav) kan du hålla filer synkroniserade på ett riktigt sätt-och-glöm det.

Hämta

Uppdatering till senaste kopiering - modifierat körbart format

Uppdatering till nyaste kopior - källkodssatsfiler( mer kommandoradsinriktad)