Windows.  Viruslar.  Noutbuklar.  Internet.  Idora.  Utilitalar.  Haydovchilar

Men ushbu maqolani katalogdagi o'zgarishlarni kuzatish uchun turli xil operatsion tizimlar tomonidan taqdim etilgan API-larni ko'rib chiqishga bag'ishlamoqchiman. Maqola mening dklab_realsync yordam dasturi (github ombori) va o'zimning o'zimning o'zimniki o'zgarishlarni kuzatish bo'yicha ishim natijasida paydo bo'ldi, men buni hali e'lon qilmoqchi emasman.

Windows, ReadDirectoryChangesW

Uchun operatsion tizim Windows-ning ajoyib ReadDirectoryChangesW funktsiyasi mavjud bo'lib, u katalog uchun o'zgarishlar to'plamini, shu jumladan rekursiv ishlash uchun bayroqni qaytaradi (bWatchSubtree). Shunday qilib, katalogdagi kuzatuv o'zgarishlarini amalga oshirish unchalik qiyin emas va xuddi shu dklab_realsync dasturida amalga oshirish 80 qator kod yoki 3,5 KB ni oladi. Qizig'i shundaki, Windows-da bu hodisalar hatto SMB orqali ham qo'llab-quvvatlanadi!

Biroq, ba'zi tuzoqlar mavjud:

  • o'zgartirish buferining cheklangan hajmi, shundan so'ng voqea navbati to'lib ketadi va bu hodisalar yo'qoladi
  • Watchdog paketi hujjatlariga ko'ra, ko'chirish hodisasi o'zgarishlar fayl tizimida paydo bo'lishidan oldin yuboriladi.
  • Tarmoq FS uchun bufer hajmi 64 KB bilan cheklangan

Xulosa: ReadDirectoryChangesW funksiyasi fayllardagi barcha hodisalarni osongina bilib olish imkonini beradi, ammo voqea navbati toʻlib ketishi mumkin va keyin siz bajarishingiz kerak boʻladi. to'liq skanerlash FS. Voqealar dolzarb bo'lishidan oldin ularni etkazish ham mumkin.

Mac OS X, FSEvents

Mac OS X shuningdek, FSEvents deb nomlangan fayl tizimi o'zgarishlarini kuzatish uchun qulay va oddiy APIga ega. Ushbu API yordamida eng oddiy demon ilovasi 50 qatorli kod yoki 1,8 kb. Navbat to'liq bo'lmasligi mumkin (!), lekin fseventsd demoni ishlamay qolsa, to'liq skanerlash hali ham talab qilinishi mumkin. Shuni ta'kidlash kerakki, ushbu API 10.7 versiyasidan oldin fayl o'zgarishlari haqida xabar bermaydi, faqat biror narsa o'zgargan kataloglar haqida xabar beradi. Voqealar hech qaerga ketmasligi va jurnalga yozilganligi sababli (FSEvents xizmati voqealarni doimiy, jildli ma'lumotlar bazasida saqlaydi), katalogning aniq tafsilotlari diskdagi joyni tejash imkonini beradi.

Xulosa: Mac OS X uchun FSEvents API barcha bunday APIlarning eng noodatiyidir. Navbat to'lib ketmaydi va hatto o'tmishdagi voqealarni qabul qilish mumkin. Shu bilan birga, hodisalarning granularligi katalog aniqligi bilan berilgan (10.7 versiyasigacha), bu demon fayllarni sinxronlashtirishda unchalik samarali emasligini anglatadi.

Linux, xabar bering

Linux vanil yadrosida katalogdagi o'zgarishlarni kuzatishning bir usuli bor - inotify. Ushbu API uchun yaxshi va batafsil hujjatlar mavjud, ammo o'zgarishlarni rekursiv kuzatish uchun hech qanday yordam yo'q! Bundan tashqari, inotify kuzatilishi mumkin bo'lgan maksimal ob'ektlar soniga cheklovga ega. Demonning eng oddiy amalga oshirilishi allaqachon 250 satr kodni yoki 8 kbni oladi. Dietlibc yordamida statik qurilish taxminan 14 kb ni oladi. Yana bir noxush jihat shundaki, dasturning o'zi soat deskriptori (bizning holatda bu har doim katalog) va nom o'rtasidagi yozishmalarni saqlab turishi kerak. Inotify_add_watch funksiyasi mavjud bo'lib, u kuzatilayotgan katalogga yo'lni uzatadi, ammo teskari funksiya yo'q - inotify_get_path, o'tgan deskriptorga ko'ra aynan shu yo'lni qaytaradi. Voqealar faqat tomosha deskriptorini va katalog ichidagi o'zgartirilgan faylga nisbiy yo'lni o'z ichiga oladi.

Inotify orqali rekursiv kataloglarni kuzatishning kamchiliklari:

  • Navbatning to'lib ketishi ehtimoli (navbat uzunligi /proc/sys/fs/inotify/max_queued_events da o'rnatiladi)
  • Kuzatuv ob'ektlarining maksimal soniga cheklov (/proc/sys/fs/inotify/max_user_watches-da o'rnatiladi)
  • Katalogni rekursiv kuzatish qobiliyatining yo'qligi
  • Katalog yaratilganda ishni alohida ko'rib chiqish zarurati (masalan, mkdir -p a/b/c). Siz “a” katalogi yaratilgan voqeani olasiz, lekin siz ushbu katalogga ishlov beruvchini biriktirayotganingizda, unda boshqa katalog allaqachon yaratilgan bo'lishi mumkin va siz bu haqda voqeani olmaysiz.
  • Butun sonlarni to'ldirishni kuzatish deskriptorining (wd) nazariy imkoniyati, chunki u uint32 tomonidan ko'rsatilgan.

FreeBSD, Mac OS X, kqueue

FreeBSD va Mac OS X kqueue yordamida oʻzgarishlarni kuzatish imkonini beradi, bu funksiya inotify uchun oʻxshash va shuningdek, rekursiv kataloglarni kuzatish imkoniyatlariga ega emas. Bundan tashqari, kqueue argument sifatida deskriptorlarni oladi fayllarni oching(kataloglar), shuning uchun ushbu API-dan foydalanganda kuzatilayotgan kataloglar soniga nisbatan cheklovlar yanada qattiqroq.

Jami:

Ko'rib turganingizdek, barcha API-larning o'ziga xos afzalliklari va kamchiliklari bor. Eng kam qulay mexanizmlar kqueue va inotify, lekin ular ham eng samarali va ishonchli hisoblanadi. Tijorat operatsion tizimlari o'zgarishlarni kuzatish uchun qulayroq mexanizmlarni taqdim etadi, lekin ular ham o'ziga xos xususiyatlarga ega. Umid qilamanki, endi siz Dropbox va shunga o'xshash dasturlarning taqdiri qanchalik qiyinligini yaxshiroq tushundingiz, bularning barchasi bilan kelishib olish va ishonchli va samarali ma'lumotlarni sinxronlashtirishni amalga oshirish kerak :).

* Rasm dan olingan

O'rnatishni talab qilmaydigan kichik dastur, siz ko'rsatgan papkadagi fayllarni kuzatish uchun mo'ljallangan. Bu sizga mahalliy va ham monitoring qilish imkonini beradi tarmoq papkasi va ogohlantirishlarni ish stolida ham, tarmoq orqali ham, elektron pochta orqali ham ko'rsating! Dastur shuningdek, bat fayllari yoki ba'zi ilovalarni ishga tushirish orqali o'zgarishlarga tezda javob berish qobiliyatiga ega.

Shunday bo'ladiki, bugungi kunda hamma u yoki bu tarzda kompyuterga bog'liq. Men kasallik sifatida kompyuterga qaramlik haqida gapirmayapman, yo'q :). Shunchaki, har bir foydalanuvchi shaxsiy fayllarini shaxsiy kompyuterida saqlaydi...

Va bir nechta odam bitta kompyuterda ishlashi mumkinligi sababli, tabiiyki, hech kim sizning ma'lumotlaringizni hech qaerga olib ketmasligiga ishonch hosil qilishingiz mumkin.

Eng radikal usul - shaxsiy papkani parol bilan shifrlash. Biroq, bu har doim ham qulay emas, masalan, tarmoq orqali unga kirish kerak bo'lsa...

Bunday holda, siz yordamga murojaat qilishingiz mumkin maxsus dasturlar kerakli kataloglardagi fayl o'zgarishlarini kuzatish uchun. Ular tanlangan papkalarni doimiy ravishda kuzatib borish va ularning mazmuni o'zgargan taqdirda foydalanuvchini ular haqida xabardor qilish imkonini beradi. Bunday kam sonlilardan biri bepul dasturlar hisoblanadi Oddiy kuzatuvchi.

Pulli analog bilan taqqoslash

Oddiy kuzatuvchi, oddiy nomiga qaramay, juda kuchli monitoring vositasidir. fayl tizimi, bu sizga bitta papkani va butun diskni yoki hatto umumiy tarmoq katalogini kuzatish imkonini beradi. Siz uni boshqa pullik bilan solishtirishingiz mumkin ichki rivojlanish- Folder Watchdog xizmati:

Simple Observer-ning yagona kamchiliklari - bir vaqtning o'zida bir nechta papkalarni kuzatishning mumkin emasligi. Qolganlarning hammasi shunchaki ortiqcha :).

Dastur bilan ishlashga tayyorgarlik

Ilovaning yana bir afzalligi shundaki, u o'rnatishni talab qilmaydi! Dastur bilan ishlashni boshlash uchun uni faqat arxivdan chiqarib, istalgan joyga joylashtirish kerak qulay papka(nazorat qilinishi kerak bo'lgan bo'lsa ham). Hammasi - biz ishlashga tayyormiz :).

Oh Ha! Sizni kutubxonalar shaxsiy kompyuteringizga o'rnatilishi kerakligi haqida ogohlantirishni deyarli unutib qo'ydim .NET Framework 3.5 (odatda ular tizim bilan o'rnatiladi, lekin ular mavjud bo'lmasligi mumkin, shuning uchun har qanday holatda yuklab olish havolasi: https://www.microsoft.com/ru-ru/download/details.aspx?id=21 ).

Dasturni ishga tushirgandan so'ng biz quyidagilarni ko'ramiz:

Qo'rqmang :). Bizdan hech kim pul talab qilmaydi - ro'yxatdan o'tish mutlaqo bepul. Va agar siz inkognito identifikatoringizni oshkor qilishni xohlamasangiz, unda siz umuman ro'yxatdan o'tishingiz shart emas! Buning uchun "Ro'yxatdan o'tmang" tugmasini bosing.

Biroq, kelajakda dasturni har safar boshlaganingizda buni qilishingiz kerak bo'ladi, shuning uchun kerakli ma'lumotlarni tegishli maydonlarga kiritish va "Ro'yxatdan o'tish" tugmasini bosish osonroq bo'ladi.

Shundan so'ng, bizning oldimizda dasturning asosiy oynasi paydo bo'ladi:

U bir nechta funktsional tugmalardan, tomosha qilingan papkaga havola va dastur faoliyati haqidagi ma'lumotlarni aks ettiruvchi holat qatoridan iborat.

Dastur sozlamalari

Jildni kuzatishni boshlashdan oldin, men sizga Simple Observer sozlamalari bilan tanishishingizni maslahat beraman. Ularga kirish uchun siz "Sozlamalar" tugmasini bosishingiz kerak:

Dastur sozlamalari to'rtta yorliqda to'plangan. Va ulardan birinchisi - "Monitoring". Bu erda kuzatuv funktsiyalari uchun javobgar bo'lgan sozlamalar mavjud. Quyidagi parametrlarga e'tibor berishga arziydi:

Ikkinchi yorliq - "Xabarnoma":

Bu erda biz papkadagi o'zgarishlar haqida olgan bildirishnoma turini sozlashimiz mumkin. Odatiy bo'lib, bildirishnoma laganda ustida paydo bo'ladi va standart signal bilan birga keladi. Biroq, siz ogohlantirishni butunlay o'chirib qo'yishingiz, signalni o'zgartirishingiz yoki mahalliy tarmoq orqali ogohlantirishni o'rnatishingiz mumkin.

Agar siz tarmoq bildirishnomalarini o'rnatishga qaror qilsangiz, "Funktsiya bo'yicha muhim eslatmalar" havolasidagi ma'lumotlarni o'qing.

"Amallar" yorlig'i kuzatilayotgan papkadagi o'zgarishlarni aniqlagandan so'ng dastur tomonidan bajarilishi mumkin bo'lgan barcha funktsiyalarni o'z ichiga oladi:

Bu erda biz sozlashimiz mumkin:

  • muayyan dastur yoki ommaviy skriptni ishga tushirish;
  • elektron pochta orqali hisobot yuborish;
  • o'zgartirilgan fayllarni FTP serveriga yuborish;
  • o'zgartirilgan fayllarni boshqa papkaga nusxalash.

Elektron pochta xabarnomalari bilan ishlashga alohida e'tibor qaratish lozim. Agar siz elektron pochtangizga hisobotlarni (shuningdek o'zgartirilgan fayllarni) olishni istasangiz pochta qutisi, keyin siz "Hisobotlarni elektron pochta orqali yuborish" katagiga belgi qo'yishingiz kerak va keyin faollashtirilgan "Sozlamalar" tugmasini bosing:

Sozlamalar oynasida biz quyidagi parametrlarni belgilashimiz kerak:

  1. "SMTP serveri". Agar siz onlayn pochta xizmatlaridan foydalansangiz, server manzili odatda prefiksdan oldin xizmatning o'zi manziliga mos keladi. "smtp."(Masalan, smtp.mail.ru, smtp.yandex.ru va h.k.). Agar ushbu sxema ishlamasa, provayderingizning yordam sahifasida aniq manzilni ko'ring.
  2. "Pochta manzili". Bu yerda siz hisobot yuboriladigan manzilni ko'rsatasiz. Tushunmovchiliklarga yo'l qo'ymaslik uchun o'z elektron pochtangizni ko'rsatgan ma'qul.
  3. "Autentifikatsiya zarur" katagiga belgi qo'ying. Agar sizning pochta serveri Xat yuborish uchun avtorizatsiya talab qilinadi (odatda barcha onlayn xizmatlarda), keyin siz faollashtirishingiz kerak bu variant va pochta qutingiz uchun login va parolni ko'rsating.
  4. "Qabul qiluvchilar" maydoni. Bu erda nuqta-vergul bilan ajratilgan holda, biz hisobotlar yuboriladigan manzillar ro'yxatini kiritamiz.

Bundan tashqari, siz "Yangi fayllarni biriktirish" opsiyasiga e'tibor berishingiz mumkin. Bu sizga elektron pochta orqali o'zgartirilgan fayllarni ogohlantirish bilan birga yuborish imkonini beradi.

Internet-kanalni haddan tashqari yuklamaslik va trafikni behuda sarflamaslik uchun (agar u to'langan bo'lsa), siz "…dan kattaroq fayllarni yubormang" opsiyasidan foydalanib, yuborilgan fayllar hajmini cheklashingiz mumkin. Quyida, aksincha, har doim yuboriladigan fayllarni ko'rsatish imkoniyati ham mavjud. Bunday fayl, masalan, dasturning ishlash jurnali bo'lishi mumkin.

Sozlash tugallangandan so'ng, "Test" tugmasini bosish orqali uning to'g'riligini tekshirishingiz mumkin:

Agar hamma narsa to'g'ri sozlangan bo'lsa, siz test xabari bilan elektron pochta xabarini olasiz.

Oxirgi yorliq "Dastur":

Bu erda tegishli variantlar mavjud umumiy sozlamalar Oddiy kuzatuvchi, masalan, tizim ishga tushganda avtomatik ishga tushirish, papka monitoringini avtomatik ishga tushirish, dasturni laganda ichida yashirish va boshqalar. Bu erda siz yangilanishlarni tekshirishingiz va qalqib chiquvchi xabarlarni ko'rsatishni faollashtirishingiz mumkin (agar ular sukut bo'yicha ko'rinmasa).

Simple Observer dasturida jildni kuzatish

Endi sizda hamma narsa kerakli tarzda sozlangan, siz Simple Observer dasturi bilan bevosita ishlashni boshlashingiz mumkin. Va birinchi navbatda, siz monitoring uchun papkani belgilashingiz kerak. Odatiy bo'lib, butun disk C: tanlangan, shuning uchun yo'lni o'zgartirish uchun "Papka" tugmasini bosishingiz va Explorer oynasida kerakli katalogni belgilashingiz kerak:

Ish stolida alohida test papkasini yaratdim, lekin jildning joylashuvi muhim emas - dastur barcha disklar bilan bir xil darajada ishlaydi. Biroq, yana bir bor eslatib o'tish joizki, siz faqat Explorer orqali mahalliy katalogni belgilashingiz mumkin. Masofadan nazorat qilish uchun umumiy jild uning manzili kiritilishi kerak birinchi sozlamalar oynasi!

Shunday qilib, biz hammamiz tayyormiz - kuzatishni boshlashimiz mumkin. Buning uchun "Ishga tushirish" tugmasini bosing:

Uni bosgandan so'ng, "To'xtatish" tugmasi yoqiladi, "Papka" tugmasi o'chiriladi va jild kuzatilgan vaqt, undagi o'zgarishlar soni va vaqt to'g'risidagi ma'lumotlar holat qatorida paydo bo'ladi. oxirgi o'zgarish. Dastur oynasini yashirish uchun uni kichraytirish kifoya, shunda u lagandaga kichraytiriladi. Tovoqlar belgisini bir marta bosish orqali oynaga yana qo'ng'iroq qilishingiz mumkin.

Simple Observer funksiyasini sinab ko'rish uchun test papkamizga bir nechta faylni joylashtiramiz:

Ko'rib turganingizdek, dastur o'zgarishlarni aniqladi va bizga papkada ma'lum nomga ega yangi fayl paydo bo'lganligini ko'rsatdi. Bu haqda elektron pochtamga ham xabar yuborildi. Simple Observer xabarining yana bir xususiyati shundaki, agar siz bildirishnoma oynasini bossangiz, sizning oldingizda papkangiz ochiladi, unda o'zgartirilgan fayl ajratib ko'rsatiladi!

Jurnallarni ko'rish

Simple Observer tomosha qilingan papkada birinchi faollikni aniqlashi bilanoq, u avtomatik ravishda fayl yaratadi watch.log. Bu matn fayli, unda sodir bo'lgan barcha hodisalar haqidagi hisobotlar yoziladi va saqlanadi.

Ushbu faylni oddiy bloknot yordamida ochish mumkin, ammo uni dasturning o'rnatilgan vositalari yordamida ko'rish qulayroqdir. Buning uchun "Jurnal" tugmasini bosing:

Bu erda biz voqea haqidagi ma'lumotlarni ko'ramiz (harakat, sana, vaqt, fayl nomi va o'zgartirilgan papka) va filtr tizimi tufayli kerakli yozuvni tezda topishimiz mumkin. Bu erda, shuningdek, jurnal faylining o'lchami juda "shishgan" bo'lsa, uni tezda tozalash imkonini beruvchi tugma mavjud :).

Aytgancha, jurnal faylining nomi va joylashuvini bilib, siz Simple Observer-ni har bir xabar bilan birga hisobot faylini yuboradigan qilib sozlashingiz mumkin. elektron pochta(sozlamalar bo'limiga qarang).

Dasturning afzalliklari va kamchiliklari

  • o'rnatish talab qilinmaydi;
  • yordamchi dasturning kichik o'lchamlari;
  • pastki papkalarni kuzatish imkoniyati;
  • elektron pochta orqali hisobotlarni yuborish;
  • mahalliy tarmoq orqali bildirishnomalarni yuborish.
  • faqat bitta papka bilan ishlaydi;
  • dastlabki konfiguratsiyasiz, u eski shaxsiy kompyuterlarda juda ko'p resurslarni sarflaydi;
  • "Standart" vositalar yordamida dasturning ishlashini to'liq yashirishning iloji yo'q.

xulosalar

Bugungi kunda Simple Observer, ehtimol, o'ziga xos yagona bepul (hatto tijorat maqsadlarida foydalanish uchun) dasturdir!

Shuning uchun, agar siz yo'qligingizda shaxsiy ma'lumotlaringizni nazorat qilishni o'rnatishga qaror qilsangiz, boshqa variantni topa olmaysiz :). Bundan tashqari, dastur faqat bitta papkani kuzatishni qo'llab-quvvatlashdan tashqari, deyarli hech qanday kamchiliklarga ega emas.

P.S. Manbaga ochiq faol havola ko'rsatilgan va Ruslan Tertishniyning muallifligi saqlanib qolgan holda, ushbu maqoladan erkin nusxa ko'chirish va iqtibos keltirish uchun ruxsat beriladi.

Agar siz yagona shaxsiy kompyuter foydalanuvchisi bo'lmasangiz, unda uzoq vaqt davomida mashinadan foydalanmaganingizdan so'ng, ushbu vaqt ichida qanday o'zgarishlar yuz berganligini aniq bilib olishingiz kerak bo'lishi mumkin. Bunday holatlar ham bo'lishi mumkin qattiq disk faollikni ko‘rsatadi, lekin u foydali jarayonlarni qayta ishlash bilan bandmi yoki zararli dastur ishlayaptimi, aniq ayta olmaysiz. FolderChangesView dasturi fayllardagi o'zgarishlarni kuzatishga va fayl tizimidagi barcha o'zgarishlar haqida so'nggi ma'lumotlarni olishga yordam beradi.

FolderChangesView - bu fayllar va papkalardagi barcha o'zgarishlarni kuzatish uchun maxsus yaratilgan kichik yordamchi dastur. Dastur real vaqt rejimida fayllar bilan sodir bo'lgan barcha o'zgarishlarni ko'rsatadi va butun natija foydalanuvchiga qulay jadvalda ko'rsatiladi. Siz dasturni ishlab chiquvchining rasmiy veb-saytidan havola orqali yuklab olishingiz mumkin (bu erda siz shunchaki dastur bilan jildga ko'chirish orqali o'rnatilgan yoriqni yuklab olishingiz mumkin): http://www.nirsoft.net/ utils/folder_changes_view.html

Dasturni sozlash

Yordamchi dastur o'rnatishni talab qilmaydi, chunki arxivda faqat bitta .exe fayli mavjud. Dastur uchun alohida papka yaratish, yoriqni yuklab olish va unga ushbu ikki faylni tashlash tavsiya etiladi. Ishga tushgandan so'ng, sizning oldingizda konfiguratsiya menyusi ochiladi (agar siz dasturdan chiqib, uni qayta ochsangiz, menyu yana sizning oldingizda paydo bo'ladi).

Bu erda siz diskni, papkalarni yoki butun bo'limni tanlashingiz kerak qattiq disk, bu tahlil qilinishi kerak. Jildni tanlashda “Shuningdek quyi kataloglarni skanerlash” bandini belgilang. Shuningdek, sizda kuzatilishi shart bo'lmagan papkalarni ko'rsatish imkoniyati mavjud: siz papkaga yo'lni belgilashingiz va "Chiqartirish" yonidagi katakchani belgilashingiz kerak. quyidagi papkalar".
Xo'sh, dan xulosa foydali sozlamalar nazorat qilinadigan fayllar hajmini belgilashingiz mumkin. Ushbu asosiy sozlamalarni tanlagandan so'ng, shunchaki "Ok" tugmasini bosing va tanlangan papkalarni kuzatish jarayoni boshlanadi.

Men ushbu maqolani katalogdagi o'zgarishlarni kuzatish uchun turli xil operatsion tizimlar tomonidan taqdim etilgan API-larni ko'rib chiqishga bag'ishlamoqchiman. Maqola mening dklab_realsync yordam dasturi (github ombori) va o'zimning o'zimning o'zimniki o'zgarishlarni kuzatish bo'yicha ishim natijasida paydo bo'ldi, men buni hali e'lon qilmoqchi emasman.

Windows, ReadDirectoryChangesW

Windows operatsion tizimi uchun ReadDirectoryChangesW ajoyib funksiyasi mavjud bo'lib, u katalog uchun o'zgarishlar to'plamini, shu jumladan rekursiv ishlash uchun bayroqni qaytaradi (bWatchSubtree). Shunday qilib, katalogdagi kuzatuv o'zgarishlarini amalga oshirish unchalik qiyin emas va xuddi shu dklab_realsync dasturida amalga oshirish 80 qator kod yoki 3,5 KB ni oladi. Qizig'i shundaki, Windows-da bu hodisalar hatto SMB orqali ham qo'llab-quvvatlanadi!

Biroq, ba'zi tuzoqlar mavjud:

  • o'zgartirish buferining cheklangan hajmi, shundan so'ng voqea navbati to'lib ketadi va bu hodisalar yo'qoladi
  • Watchdog paketi hujjatlariga ko'ra, ko'chirish hodisasi o'zgarishlar fayl tizimida paydo bo'lishidan oldin yuboriladi.
  • Tarmoq FS uchun bufer hajmi 64 KB bilan cheklangan

Xulosa: ReadDirectoryChangesW funksiyasi fayllardagi barcha hodisalar haqida osongina bilib olish imkonini beradi, lekin voqea navbati to'lib ketishi mumkin va keyin fayl tizimini to'liq skanerdan o'tkazishingiz kerak bo'ladi. Voqealar dolzarb bo'lishidan oldin ularni etkazish ham mumkin.

Mac OS X, FSEvents

Mac OS X shuningdek, FSEvents deb nomlangan fayl tizimi o'zgarishlarini kuzatish uchun qulay va oddiy APIga ega. Ushbu API yordamida eng oddiy demon ilovasi 50 qatorli kod yoki 1,8 kb. Navbat to'liq bo'lmasligi mumkin (!), lekin fseventsd demoni ishlamay qolsa, to'liq skanerlash hali ham talab qilinishi mumkin. Shuni ta'kidlash kerakki, ushbu API 10.7 versiyasidan oldin fayl o'zgarishlari haqida xabar bermaydi, faqat biror narsa o'zgargan kataloglar haqida xabar beradi. Voqealar hech qaerga ketmasligi va jurnalga yozilganligi sababli (FSEvents xizmati voqealarni doimiy, jildli ma'lumotlar bazasida saqlaydi), katalogning aniq tafsilotlari diskdagi joyni tejash imkonini beradi.

Xulosa: Mac OS X uchun FSEvents API barcha bunday APIlarning eng noodatiyidir. Navbat to'lib ketmaydi va hatto o'tmishdagi voqealarni qabul qilish mumkin. Shu bilan birga, hodisalarning granularligi katalog aniqligi bilan berilgan (10.7 versiyasigacha), bu demon fayllarni sinxronlashtirishda unchalik samarali emasligini anglatadi.

Linux, xabar bering

Linux vanil yadrosida katalogdagi o'zgarishlarni kuzatishning bir usuli bor - inotify. Ushbu API uchun yaxshi va batafsil hujjatlar mavjud, ammo o'zgarishlarni rekursiv kuzatish uchun hech qanday yordam yo'q! Bundan tashqari, inotify kuzatilishi mumkin bo'lgan maksimal ob'ektlar soniga cheklovga ega. Demonning eng oddiy amalga oshirilishi allaqachon 250 satr kodni yoki 8 kbni oladi. Dietlibc yordamida statik qurilish taxminan 14 kb ni oladi. Yana bir noxush jihat shundaki, dasturning o'zi soat deskriptori (bizning holatda bu har doim katalog) va nom o'rtasidagi yozishmalarni saqlab turishi kerak. Inotify_add_watch funksiyasi mavjud bo'lib, u kuzatilayotgan katalogga yo'lni uzatadi, ammo teskari funksiya yo'q - inotify_get_path, o'tgan deskriptorga ko'ra aynan shu yo'lni qaytaradi. Voqealar faqat tomosha deskriptorini va katalog ichidagi o'zgartirilgan faylga nisbiy yo'lni o'z ichiga oladi.

Inotify orqali rekursiv kataloglarni kuzatishning kamchiliklari:

  • Navbatning to'lib ketishi ehtimoli (navbat uzunligi /proc/sys/fs/inotify/max_queued_events da o'rnatiladi)
  • Kuzatuv ob'ektlarining maksimal soniga cheklov (/proc/sys/fs/inotify/max_user_watches-da o'rnatiladi)
  • Katalogni rekursiv kuzatish qobiliyatining yo'qligi
  • Katalog yaratilganda ishni alohida ko'rib chiqish zarurati (masalan, mkdir -p a/b/c). Siz “a” katalogi yaratilgan voqeani olasiz, lekin siz ushbu katalogga ishlov beruvchini biriktirayotganingizda, unda boshqa katalog allaqachon yaratilgan bo'lishi mumkin va siz bu haqda voqeani olmaysiz.
  • Butun sonlarni to'ldirishni kuzatish deskriptorining (wd) nazariy imkoniyati, chunki u uint32 tomonidan ko'rsatilgan.

FreeBSD, Mac OS X, kqueue

FreeBSD va Mac OS X kqueue yordamida oʻzgarishlarni kuzatish imkonini beradi, bu funksiya inotify uchun oʻxshash va shuningdek, rekursiv kataloglarni kuzatish imkoniyatlariga ega emas. Bundan tashqari, kqueue argument sifatida ochiq fayl (katalog) identifikatorlarini oladi, shuning uchun ushbu APIdan foydalanganda kuzatilayotgan kataloglar soniga nisbatan cheklovlar yanada qattiqroq bo'ladi.

Jami:

Ko'rib turganingizdek, barcha API-larning o'ziga xos afzalliklari va kamchiliklari bor. Eng kam qulay mexanizmlar kqueue va inotify, lekin ular ham eng samarali va ishonchli hisoblanadi. Tijorat operatsion tizimlari o'zgarishlarni kuzatish uchun qulayroq mexanizmlarni taqdim etadi, lekin ular ham o'ziga xos xususiyatlarga ega. Umid qilamanki, endi siz Dropbox va shunga o'xshash dasturlarning taqdiri qanchalik qiyinligini yaxshiroq tushundingiz, bularning barchasi bilan kelishib olish va ishonchli va samarali ma'lumotlarni sinxronlashtirishni amalga oshirish kerak :).

* Rasm dan olingan

operatsiya xonasi Windows tizimi Disklarda nima borligi haqida tasavvurga ega bo'lish imkonini beruvchi Explorer vositasi mavjud. Fayllar ro'yxatiga qo'shimcha ravishda biz ularning o'lchamlari va yaratilgan yoki o'zgartirilgan sanasi haqidagi ma'lumotlarni ham ko'ramiz. Biroq, bu diskni eng ko'p yopib qo'yadigan ma'lumotlarni topish uchun juda kam ma'lumot.

Ushbu maqoladagi ilovalarni ikki toifaga bo'lish mumkin. Birinchisi, diskni vizuallashtirishga ixtisoslashgan dasturlar. Ma'lumotlarning ushbu grafik tasviri fayllar ro'yxatidan ko'ra yaxshiroq qabul qilinadi. Ikkinchi guruh asboblari tanlangan saqlash vositalarida saqlangan barcha ma'lumotlar orasida alohida fayl turlarining ishtiroki bo'yicha statistik ma'lumotlarni ko'rsatadigan ilovalardir.

WinDirStat

Kompyuterning qattiq diskidagi fayllar hajmi va sonini ifodalaydi grafik shakl, shuningdek, biz tanlagan olinadigan muhitda.

WinDirStat-ning afzalliklari

  • Grafik vizualizatsiyaning qulay shakli
  • Eski holatda ham ishlaydi Windows versiyalari
  • Elementlar qanday ko'rsatilishini belgilashingiz mumkin
  • Daraxt kartalari

Kamchiliklari:

  • Rangni aniqlay olmaslik Ko'proq fayl turlari

Tarqatish turi: bepul dastur
Narxi: tekinga

Portativ SpaceSniffer

SpaceSniffer skanerdan o'tkazadi va sizga tanlangan drayvlar tarkibini oson o'qiladigan ierarxik ranglar sxemasida ko'rsatadi.

SpaceSniffer-ning afzalliklari

  • O'rnatish shart emas
  • Vizuallashtirilgan ma'lumotlarni filtrlash uchun keng imkoniyatlar

Tarqatish turi: bepul dastur
Narxi: tekinga

TreeSize bepul

TreeSize Free har qanday media tarkibini tezda skanerlash imkonini beradi va natijalar ochiladigan daraxtda ko'rsatiladi.

TreeSize Free-ning afzalliklari

  • Hajmi, fayllar yoki papkalar soni bo'yicha qulay saralash
  • Muqobil fayl ma'lumotlar oqimlari bilan kurashadi NTFS tizimlari
  • Sensorli ekranlar uchun moslashtirilgan interfeys

Kamchiliklari:

  • Faqat inglizcha versiyada

Tarqatish turi: bepul dastur
Narxi: tekinga

JDiskReport

JDiskReport - Excel jadvallarini eslatuvchi jadvallar ko'rinishidagi statistikani sevuvchilar uchun. Daraxtlar o'rniga bizda gistogrammalar va doiraviy diagrammalar mavjud.

JDiskReport ning afzalliklari

  • Qiziqarli grafik diagrammalar
  • Ko'p turli statistik ma'lumotlar, jumladan, hajmi va yaratilish sanasi bo'yicha taqsimot
  • Mavjud Java versiyasi, bu Java bilan har qanday platformada ishlaydi

Kamchiliklari:

  • Windows versiyasi Java o'rnatilishini talab qiladi

Tarqatish turi: bepul dastur
Narxi: tekinga

FolderSize

FolderSize xulosa oynasi orqali ta'kidlanadi. U diagrammalar va turli mezonlar bo'yicha saralanishi mumkin bo'lgan fayllar yoki papkalar ro'yxatini ko'rsatadi.

FolderSize-ning afzalliklari

  • Grafiklar va fayllar ro'yxatini bitta oynada ko'rsatadi
  • Skanerlash jarayonini to'xtatib turish va davom ettirish imkonini beradi, allaqachon skanerlangan joylardagi o'zgarishlarni tezda hisobga oladi

Kamchiliklari:

  • Bepul versiya mos keladiganlarni skanerlashga ruxsat bermaydi qattiq disklar va tarmoq

Tarqatish turi: bepul dastur
Narxi: tekinga

Agar xatolikni sezsangiz, matn qismini tanlang va Ctrl+Enter tugmalarini bosing
ULOSING: