Windows.  Virus.  Bärbara datorer.  Internet.  Kontor.  Verktyg.  Förare

Jag skulle vilja ägna den här artikeln till en översyn av API:erna som tillhandahålls av olika operativsystem för att spåra ändringar i en katalog. Artikeln dök upp som ett resultat av mitt arbete med ändringsspårningsdemoner för verktyget dklab_realsync (github-repository) och mitt eget, vilket jag inte vill tillkännage ännu.

Windows, ReadDirectoryChangesW

För operativsystem Windows har en fantastisk ReadDirectoryChangesW-funktion som returnerar en uppsättning ändringar för en katalog, inklusive en flagga för att arbeta rekursivt (bWatchSubtree). Att implementera spårningsändringar i en katalog är således inte särskilt svårt, och i samma dklab_realsync tar implementeringen 80 rader kod eller 3,5 KB. Intressant nog, på Windows stöds dessa händelser även över SMB!

Det finns dock vissa fallgropar:

  • ändlig storlek på ändringsbufferten varefter händelsekön kommer att svämma över och dessa händelser kommer att gå förlorade
  • Enligt dokumentationen för watchdog-paketet skickas flytthändelsen innan ändringarna blir synliga i filsystemet
  • Buffertstorleken är begränsad till 64 KB för nätverks-FS

Slutsats: Med funktionen ReadDirectoryChangesW kan du enkelt ta reda på alla händelser i filer, men händelsekön kan bli full och då måste du köra full scan FS. Det är också möjligt att leverera evenemang innan de blir aktuella.

Mac OS X, FSEvents

Mac OS X har också ett bekvämt och enkelt API för att övervaka filsystemändringar som kallas FSEvents. Med detta API är den enklaste demonimplementeringen 50 rader kod eller 1,8 kb. Kön kanske inte är full (!), men en fullständig genomsökning kan fortfarande krävas om fseventsd-demonen kraschar. Det är värt att notera att detta API, före version 10.7, inte rapporterar filändringar, det rapporterar bara kataloger där något har förändrats. Eftersom händelser inte går någonstans och skrivs till loggen (FSEvents-tjänsten lagrar händelser i en beständig databas per volym), tillåter katalogexakta detaljer att spara diskutrymme.

Slutsats: FSEvents API för Mac OS X är det mest ovanliga av alla sådana API:er. Kön svämmar inte över och det går till och med att ta emot händelser från det förflutna. Händelsegranularitet ges dock med katalogprecision (upp till version 10.7), vilket innebär att demonen är mindre effektiv för att synkronisera filer.

Linux, inotify

I linux vaniljkärnan finns ett sätt att spåra ändringar i en katalog - inotify. Det finns bra och detaljerad dokumentation för detta API, men det finns inget stöd för rekursiv förändringsspårning! Inotify har också en gräns för det maximala antalet objekt som kan övervakas. Den enklaste implementeringen av demonen tar redan 250 rader kod eller 8 kb. En statisk konstruktion med dietlibc tar ungefär 14 kb. En annan obehaglig punkt är att själva applikationen måste upprätthålla överensstämmelse mellan klockbeskrivningen (i vårt fall är detta alltid en katalog) och namnet. Det finns en funktion inotify_add_watch, som skickas vägen till den övervakade katalogen, men det finns ingen invers funktion - inotify_get_path, som skulle returnera just denna sökväg enligt den godkända deskriptorn. Händelser innehåller endast en bevakningsbeskrivning och en relativ sökväg till den ändrade filen i katalogen.

Fallgropar med rekursiv katalogspårning via inotify:

  • Möjlighet till köspill (kölängd ställs in i /proc/sys/fs/inotify/max_queued_events)
  • Begränsning av det maximala antalet spårningsobjekt (inställt i /proc/sys/fs/inotify/max_user_watches)
  • Brist på rekursiv katalogspårning
  • Behovet av att hantera ärendet separat när en katalog skapas (till exempel mkdir -p a/b/c). Du kommer att få en händelse att katalog "a" har skapats, men medan du kopplar en hanterare till denna katalog, kan en annan katalog redan skapas i den och du kommer inte att få en händelse om detta.
  • Teoretisk möjlighet för heltalsoverflow watch descriptor (wd), eftersom den specificeras av uint32

FreeBSD, Mac OS X, kqueue

FreeBSD och Mac OS X tillåter ändringsspårning med kqueue, som i egenskaper liknar inotify och inte heller har rekursiva katalogspårningsmöjligheter. Dessutom tar kqueue deskriptorer som argument öppna filer(kataloger), så när du använder detta API är begränsningarna för antalet övervakade kataloger ännu strängare.

Total:

Som du kan se har alla API:er sina egna fördelar och nackdelar. De minst bekväma mekanismerna är kqueue och inotify, men de är också de mest effektiva och pålitliga. Kommersiella operativsystem tillhandahåller mer bekväma mekanismer för att spåra förändringar, men de har också sina egna egenskaper. Jag hoppas nu att du har en bättre uppfattning om hur svårt ödet för Dropbox och liknande program är som behöver komma överens med allt detta och utföra pålitlig och effektiv datasynkronisering :).

*Bilden tagen från

Ett litet program som inte kräver installation, designat för att övervaka filer i en mapp du anger. Det låter dig övervaka både lokalt och nätverksmapp och visa varningar både på skrivbordet och via nätverket eller via e-post! Programmet har också förmågan att snabbt svara på ändringar genom att starta bat-filer eller vissa applikationer.

Det råkar vara så att idag är alla, på ett eller annat sätt, beroende av datorn. Jag pratar inte om datorberoende som en sjukdom, nej :). Det är bara det att varje användare lagrar sina personliga filer på sin PC ändå...

Och eftersom flera personer kan arbeta på en dator, så vill du naturligtvis se till att ingen tar din data någonstans.

Det mest radikala sättet är att kryptera din personliga mapp med ett lösenord. Detta är dock inte alltid bekvämt, till exempel om du behöver komma åt det över nätverket...

I det här fallet kan du ta till hjälp specialprogram för att övervaka filändringar i de kataloger du behöver. De låter dig ständigt övervaka utvalda mappar och meddela användaren om dem om deras innehåll ändras. En av få sådana gratis programär Enkel observatör.

Jämförelse med en betald analog

En enkel observatör är, trots sitt enkla namn, ett ganska kraftfullt övervakningsverktyg. filsystem, som låter dig övervaka både en enda mapp och en hel disk eller till och med en delad nätverkskatalog. Du kan jämföra det med en annan betald inhemsk utveckling- Folder Watchdog Service:

Den enda nackdelen med Simple Observer är oförmågan att övervaka flera mappar samtidigt. Allt annat är bara ett plus :).

Förbereder för att arbeta med programmet

En annan fördel med applikationen är att den inte kräver installation! För att börja arbeta med programmet behöver du bara extrahera det från arkivet och placera det i valfritt bekväm mapp(om än den som bör övervakas). Det var allt - vi är redo att arbeta :).

Åh ja! Jag glömde nästan att varna dig för att bibliotek måste installeras på din PC .NET Framework 3.5 (vanligtvis är de installerade med systemet, men de kanske inte finns, så för säkerhets skull, här är nedladdningslänken: https://www.microsoft.com/ru-ru/download/details.aspx?id=21 ).

Efter att ha kört programmet kommer vi att se följande:

Var inte rädd :). Ingen kräver pengar av oss - registreringen är helt gratis. Och om du inte vill avslöja din inkognitoidentitet, behöver du inte registrera dig alls! För att göra detta klickar du helt enkelt på knappen "Registrera inte".

Men i framtiden kommer du att behöva göra detta varje gång du startar programmet, så det blir lättare att ange de nödvändiga uppgifterna i lämpliga fält och klicka på "Registrering".

Efter detta kommer huvudprogramfönstret att dyka upp framför oss:

Den består av flera funktionella knappar, en länk till den bevakade mappen och en statusrad som visar information om applikationsaktivitet.

Programinställningar

Innan du börjar övervaka en mapp råder jag dig att bekanta dig med inställningarna för Simple Observer. För att komma till dem måste du klicka på knappen "Inställningar":

Programinställningarna finns samlade på fyra flikar. Och den första av dem är "Övervakning". Här är inställningarna som ansvarar för själva spårningsfunktionerna. Det är värt att uppmärksamma följande parametrar:

Den andra fliken är "Meddelande":

Här kan vi konfigurera vilken typ av avisering vi får om ändringar i mappen. Som standard visas meddelandet ovanför facket och åtföljs av en standardsignal. Du kan dock stänga av varningen helt, ändra signalen eller ställa in en varning över det lokala nätverket.

Om du bestämmer dig för att ställa in nätverksaviseringar, se till att läsa informationen på länken "Viktigt anmärkningar om funktionen".

Fliken "Åtgärder" innehåller alla funktioner som är tillgängliga för exekvering av programmet efter att ha upptäckt ändringar i den övervakade mappen:

Här kan vi konfigurera:

  • köra ett specifikt program eller batchskript;
  • skicka en rapport via e-post;
  • skicka modifierade filer till en FTP-server;
  • kopiera ändrade filer till en annan mapp.

Särskild uppmärksamhet bör ägnas åt att arbeta med e-postmeddelanden. Om du vill få rapporter (liksom ändrade filer) till din e-post brevlåda, då måste du aktivera kryssrutan "Skicka rapporter via e-post" och sedan klicka på den aktiverade knappen "Inställningar":

I inställningsfönstret måste vi ange följande parametrar:

  1. "SMTP-server". Om du använder e-posttjänster på nätet motsvarar serveradressen vanligtvis adressen till själva tjänsten, föregås av prefixet "smtp."(Till exempel, smtp.mail.ru, smtp.yandex.ru etc.). Om detta schema inte fungerar, se den exakta adressen på hjälpsidan för din leverantör.
  2. "Mailadress." Här anger du från vilken adress rapporten ska skickas. För att undvika missförstånd är det bättre att ange din egen e-post.
  3. Kryssrutan "Autentisering krävs". Om på din e-postserver För att skicka brev krävs auktorisation (vanligtvis på alla onlinetjänster), då behöver du aktivera detta alternativ och ange inloggning och lösenord för din brevlåda.
  4. Fältet "Mottagare". Här, separerade med semikolon, anger vi en lista med adresser som rapporterna ska skickas till.

Dessutom kan du vara uppmärksam på alternativet "Bifoga nya filer". Det låter dig skicka filer som har ändrats via e-post tillsammans med en varning.

För att inte överbelasta internetkanalen och inte slösa bort trafik förgäves (om den är betald) kan du begränsa storleken på skickade filer med alternativet "Skicka inte filer större än ...". Nedan finns också en möjlighet, tvärtom, att specificera filer som alltid kommer att skickas. En sådan fil kan till exempel vara en programdriftslogg.

När installationen är klar kan du kontrollera att den är korrekt genom att klicka på knappen "Test":

Om allt är rätt konfigurerat får du ett e-postmeddelande med ett testmeddelande.

Den sista fliken är "Program":

Här finns alternativen ang allmänna inställningar En enkel observatör, som autorun när systemet startar, automatisk start av mappövervakning, döljer en applikation i facket, etc. Här kan du söka efter uppdateringar och aktivera visningen av popup-meddelanden (om de inte är synliga som standard).

Övervaka en mapp i Simple Observer-programmet

Nu när du har allt konfigurerat som du behöver kan du börja arbeta direkt med Simple Observer-programmet. Och först och främst måste du ange en mapp för övervakning. Som standard är hela Drive C: vald, så för att ändra sökvägen måste du klicka på knappen "Mapp" och ange önskad katalog i Explorer-fönstret:

Jag skapade en separat testmapp på skrivbordet, men mappens placering spelar ingen roll - programmet fungerar lika bra med alla diskar. Det är dock värt att nämna igen att du bara kan ange en lokal katalog via Explorer. För att övervaka fjärrkontrollen delad mapp dess adress måste anges första inställningsfönstret!

Så vi är alla redo - vi kan börja spåra. För att göra detta, klicka på "Start"-knappen:

Efter att ha tryckt på den aktiveras "Stopp" -knappen, "Mapp" -knappen avaktiveras och information om tiden då mappen övervakades, antalet ändringar i den och tiden visas i statusraden senaste förändringen. För att dölja programfönstret, minimera det bara så kommer det att minimeras till facket. Du kan ringa upp fönstret igen genom att klicka på ikonen i fältet.

För att testa funktionen hos Simple Observer, låt oss placera en fil i vår testmapp:

Som du kan se upptäckte programmet ändringarna och indikerade för oss att en ny fil med ett visst namn hade dykt upp i mappen. En rapport om detta skickades också till min e-post. En annan funktion i Simple Observer-meddelandet är att om du klickar på meddelandefönstret kommer din mapp att öppnas framför dig, där den ändrade filen kommer att markeras!

Visa loggar

Så snart Simple Observer upptäcker den första aktiviteten i den övervakade mappen kommer den automatiskt att skapa en fil watch.log. Detta textfil, där rapporter om alla händelser som inträffar registreras och lagras.

Den här filen kan öppnas med vanligt Anteckningar, men det är bekvämare att visa den med hjälp av programmets inbyggda verktyg. För att göra detta, klicka bara på knappen "Logga":

Här kommer vi att se data om händelsen (åtgärd, datum, tid, filnamn och mapp som ändrades) och kan snabbt hitta önskad post tack vare filtersystemet. Här finns även en knapp som gör att du snabbt kan rensa loggfilen om den är för "svullen" i storlek :).

Förresten, genom att känna till namnet och platsen för loggfilen kan du konfigurera Simple Observer så att den skickar en rapportfil tillsammans med varje meddelande till din e-post(se avsnittet om inställningar).

Fördelar och nackdelar med programmet

  • ingen installation krävs;
  • liten storlek på verktyget;
  • förmågan att spåra undermappar;
  • skicka rapporter via e-post;
  • skicka meddelanden över det lokala nätverket.
  • fungerar bara med en mapp;
  • utan preliminär konfiguration förbrukar den ganska mycket resurser på äldre datorer;
  • Det finns inget sätt att helt dölja programmets funktion med "standard" medel.

Slutsatser

Idag är Simple Observer kanske det enda helt gratis (även för kommersiellt bruk) programmet i sitt slag!

Därför, om du till varje pris bestämmer dig för att installera övervakning av personuppgifter på din dator i din frånvaro, kommer du helt enkelt inte att hitta ett annat alternativ :). Dessutom har programmet, förutom att stödja övervakning av endast en mapp, praktiskt taget inga nackdelar.

P.S. Tillstånd ges att fritt kopiera och citera denna artikel, förutsatt att en öppen aktiv länk till källan anges och att Ruslan Tertyshnys författarskap bevaras.

Om du inte är den enda PC-användaren kan du behöva ta reda på exakt vilka förändringar som har skett under denna tidsperiod efter att ha inte använt maskinen under en längre tid. Det kan också finnas situationer där hårddisk visar aktivitet, men du kan inte riktigt avgöra om den är upptagen med att bearbeta användbara processer eller om det är skadlig programvara som körs. FolderChangesView-programmet hjälper dig att spåra ändringar i filer och få uppdaterad information om alla ändringar i filsystemet.

FolderChangesView är ett litet verktyg som skapades specifikt för att spåra alla ändringar som sker i filer och mappar. Programmet visar i realtid alla ändringar som sker med filer, och hela resultatet visas för användaren i en bekväm tabell. Du kan ladda ner själva programmet från utvecklarens officiella webbplats med hjälp av länken (där kan du också ladda ner sprickan, som installeras genom att helt enkelt flytta den till mappen med applikationen): http://www.nirsoft.net/ utils/folder_changes_view.html

Att ställa in programmet

Verktyget kräver ingen installation, eftersom arkivet bara innehåller en .exe-fil. Det rekommenderas att skapa en separat mapp för programmet, ladda ner sprickan och släppa dessa två filer i den. Efter start öppnas konfigurationsmenyn framför dig (om du avslutar programmet och öppnar det igen, kommer menyn att visas framför dig igen).

Här behöver du välja en disk, mappar eller en hel partition hårddisk, som behöver analyseras. När du väljer en mapp, lämna "Skanna även underkataloger" markerad. Du har också möjlighet att ange mappar som inte behöver övervakas: du måste ange sökvägen till mappen och markera rutan bredvid "Uteslut följande mappar".
Tja, avslutningsvis från användbara inställningar du kan ställa in storleken på filerna som ska övervakas. När du har valt dessa grundläggande inställningar klickar du bara på "Ok" och processen för att övervaka de valda mapparna kommer att börja.

Jag skulle vilja ägna den här artikeln till en översyn av API:erna som tillhandahålls av olika operativsystem för att spåra ändringar i en katalog. Artikeln dök upp som ett resultat av mitt arbete med ändringsspårningsdemoner för verktyget dklab_realsync (github-repository) och mitt eget, vilket jag inte vill tillkännage ännu.

Windows, ReadDirectoryChangesW

För Windows-operativsystemet finns det en underbar funktion ReadDirectoryChangesW, som returnerar en uppsättning ändringar för en katalog, inklusive en flagga för att arbeta rekursivt (bWatchSubtree). Att implementera spårningsändringar i en katalog är således inte särskilt svårt, och i samma dklab_realsync tar implementeringen 80 rader kod eller 3,5 KB. Intressant nog, på Windows stöds dessa händelser även över SMB!

Det finns dock vissa fallgropar:

  • ändlig storlek på ändringsbufferten varefter händelsekön kommer att svämma över och dessa händelser kommer att gå förlorade
  • Enligt dokumentationen för watchdog-paketet skickas flytthändelsen innan ändringarna blir synliga i filsystemet
  • Buffertstorleken är begränsad till 64 KB för nätverks-FS

Slutsats: Med funktionen ReadDirectoryChangesW kan du enkelt ta reda på alla händelser i filer, men händelsekön kan bli full och då måste du göra en fullständig genomsökning av filsystemet. Det är också möjligt att leverera evenemang innan de blir aktuella.

Mac OS X, FSEvents

Mac OS X har också ett bekvämt och enkelt API för att övervaka filsystemändringar som kallas FSEvents. Med detta API är den enklaste demonimplementeringen 50 rader kod eller 1,8 kb. Kön kanske inte är full (!), men en fullständig genomsökning kan fortfarande krävas om fseventsd-demonen kraschar. Det är värt att notera att detta API, före version 10.7, inte rapporterar filändringar, det rapporterar bara kataloger där något har förändrats. Eftersom händelser inte går någonstans och skrivs till loggen (FSEvents-tjänsten lagrar händelser i en beständig databas per volym), tillåter katalogexakta detaljer att spara diskutrymme.

Slutsats: FSEvents API för Mac OS X är det mest ovanliga av alla sådana API:er. Kön svämmar inte över och det går till och med att ta emot händelser från det förflutna. Händelsegranularitet ges dock med katalogprecision (upp till version 10.7), vilket innebär att demonen är mindre effektiv för att synkronisera filer.

Linux, inotify

I linux vaniljkärnan finns ett sätt att spåra ändringar i en katalog - inotify. Det finns bra och detaljerad dokumentation för detta API, men det finns inget stöd för rekursiv förändringsspårning! Inotify har också en gräns för det maximala antalet objekt som kan övervakas. Den enklaste implementeringen av demonen tar redan 250 rader kod eller 8 kb. En statisk konstruktion med dietlibc tar ungefär 14 kb. En annan obehaglig punkt är att själva applikationen måste upprätthålla överensstämmelse mellan klockbeskrivningen (i vårt fall är detta alltid en katalog) och namnet. Det finns en funktion inotify_add_watch, som skickas vägen till den övervakade katalogen, men det finns ingen invers funktion - inotify_get_path, som skulle returnera just denna sökväg enligt den godkända deskriptorn. Händelser innehåller endast en bevakningsbeskrivning och en relativ sökväg till den ändrade filen i katalogen.

Fallgropar med rekursiv katalogspårning via inotify:

  • Möjlighet till köspill (kölängd ställs in i /proc/sys/fs/inotify/max_queued_events)
  • Begränsning av det maximala antalet spårningsobjekt (inställt i /proc/sys/fs/inotify/max_user_watches)
  • Brist på rekursiv katalogspårning
  • Behovet av att hantera ärendet separat när en katalog skapas (till exempel mkdir -p a/b/c). Du kommer att få en händelse att katalog "a" har skapats, men medan du kopplar en hanterare till denna katalog, kan en annan katalog redan skapas i den och du kommer inte att få en händelse om detta.
  • Teoretisk möjlighet för heltalsoverflow watch descriptor (wd), eftersom den specificeras av uint32

FreeBSD, Mac OS X, kqueue

FreeBSD och Mac OS X tillåter ändringsspårning med kqueue, som i egenskaper liknar inotify och inte heller har rekursiva katalogspårningsmöjligheter. Dessutom tar kqueue handtag för att öppna filer (kataloger) som argument, så när du använder detta API är begränsningarna för antalet övervakade kataloger ännu strängare.

Total:

Som du kan se har alla API:er sina egna fördelar och nackdelar. De minst bekväma mekanismerna är kqueue och inotify, men de är också de mest effektiva och pålitliga. Kommersiella operativsystem tillhandahåller mer bekväma mekanismer för att spåra förändringar, men de har också sina egna egenskaper. Jag hoppas nu att du har en bättre uppfattning om hur svårt ödet för Dropbox och liknande program är som behöver komma överens med allt detta och utföra pålitlig och effektiv datasynkronisering :).

*Bilden tagen från

operationssalen Windows-system har ett Explorer-verktyg som låter dig få en uppfattning om vad som finns på dina enheter. Förutom listan över filer ser vi även information om deras storlek och datum för skapande eller ändring. Detta är dock för lite information för att hitta den data som täpper till hårddisken mest.

Ansökningarna i denna artikel kan delas in i två kategorier. Det första är program som är specialiserade på diskvisualisering. Denna grafiska representation av data uppfattas bättre än en lista med filer. Den andra gruppen verktyg är applikationer som visar statistik över deltagande av enskilda filtyper bland all information som lagras på utvalda lagringsmedier.

WinDirStat

Representerar storleken och antalet filer på en dators hårddisk i grafisk form, samt på flyttbara media som valts av oss.

Fördelar med WinDirStat

  • En tillgänglig form av grafisk visualisering
  • Fungerar även i gammalt Windows-versioner
  • Du kan definiera hur element ska visas
  • Trädkort

Brister:

  • Oförmåga att bestämma färg mer filtyper

Distributionstyp: gratisprogram
Pris: gratis

SpaceSniffer Portable

SpaceSniffer skannar och visar dig innehållet på utvalda enheter i ett lättläst hierarkiskt färgschema.

Fördelar med SpaceSniffer

  • Ingen installation krävs
  • Stora möjligheter för att filtrera data som visualiseras

Distributionstyp: gratisprogram
Pris: gratis

TreeSize gratis

TreeSize Free låter dig snabbt skanna innehållet i alla media, och resultaten visas i en rullgardinsmeny.

Fördelarna med TreeSize Free

  • Bekväm sortering efter storlek, antal filer eller mappar
  • Klarar alternativa fildataströmmar NTFS-system
  • Gränssnitt anpassat för pekskärmar

Brister:

  • Endast i engelsk version

Distributionstyp: gratisprogram
Pris: gratis

JDiskReport

JDiskReport - för älskare av statistik i form av diagram som påminner om Excel-diagram. Istället för träd har vi histogram och cirkeldiagram.

Fördelar med JDiskReport

  • Intressant grafiska diagram
  • Massor av olika statistik, inklusive uppdelning efter storlek och skapandedatum
  • Tillgänglig Java version, som fungerar på alla plattformar med Java

Brister:

  • Windows-versionen kräver Java installerat

Distributionstyp: gratisprogram
Pris: gratis

Mappstorlek

FolderSize markeras av sammanfattningsfönstret. Den visar diagram och en lista över filer eller mappar som kan sorteras efter olika kriterier.

Fördelar med FolderSize

  • Visar diagram och fillista i ett fönster
  • Låter dig pausa och återuppta skanningsproceduren, tar snabbt hänsyn till ändringar på redan skannade platser

Brister:

  • Gratisversionen tillåter inte skanning av matchade hårddiskar och nätverk

Distributionstyp: gratisprogram
Pris: gratis



Om du upptäcker ett fel markerar du ett textstycke och trycker på Ctrl+Enter
DELA: