Uygulama

Linux’ta fswatch Kullanarak Dosya Değişiklikleri Nasıl İzlenir

Fswatch, belirtilen dosyaların veya dizinlerin içeriği değiştirildiğinde veya değiştirildiğinde bize haber veren ücretsiz, açık kaynaklı, çok platformlu bir dosya değişikliği izleme aracıdır. fswatch kullanarak dosyalarda ve/veya dizinlerde yapılan değişiklikleri kolaylıkla takip edebiliyoruz. GNU/Linux, *BSD’ler, Mac OS X, Solaris ve Microsoft Windows vb. dahil tüm işletim sistemlerini destekler. Bu kısa kılavuzda, Linux ve Unix benzeri işletim sistemlerinde fswatch kullanarak dosya değişikliklerini nasıl izleyeceğinizi göstermeme izin verin.

İzleme türleri

Fswatch aşağıdaki monitör türlerini uygular.

  • Apple OS X’in Dosya Sistemi Olayları API’sini temel alan bir izleme
  • FreeBSD 4.1’de tanıtılan bir bildirim arayüzü olan kqueue tabanlı bir izleme
  • Solaris çekirdeğinin ve türevlerinin Dosya Olayları Bildirimi API’sini temel alan bir izleme
  • Dosya sistemi değişikliklerini uygulamalara bildiren bir Linux çekirdek alt sistemi olan inotify’a dayalı bir izleme
  • Bir dizindeki değişiklikleri bildiren bir Microsoft Windows API’si olan ReadDirectoryChangesW’ye dayalı bir izleme
  • Dosya sistemini periyodik olarak gösteren, dosya değiştirme sürelerini belleğe kaydeden ve dosya sistemi değişikliklerini manuel olarak hesaplayan bir izleme

Özellikler

fswatch özellikleri ile ilgili olarak şunları sıralayabiliriz:

  • Çapraz platform ve açık kaynak yardımcı programı.
  • Birçok işletim sistemine özel API desteği.
  • Özyinelemeli dizin izleme.
  • Normal ifadeleri dahil etme ve hariç tutmayı kullanarak yol filtreleme.
  • Özelleştirilebilir kayıt formatı.
  • Periyodik boşta olaylar için destek.

Linux’ta fswatch’ı kurulumu

fswatch yardımcı programı, popüler Linux dağıtımlarının varsayılan depolarında bulunur.

fswatch’ı Debian, Ubuntu, Linux Mint, Pop OS ve diğer APT tabanlı sistemlere kurmak için şunu çalıştırın:

$ sudo apt install fswatch

Fswatch’ı Fedora, RHEL, CentOS, AlmaLinux ve Rocky Linux’a kurmak için, şu komutu kullanarak [EPEL] deposunu etkinleştirin:

$ sudo dnf install epel-release

Ardından şu komutu kullanarak install fswatch’ı kurun:

$ sudo dnf install fswatch

fswatch’ı openSUSE’ye kurmak için şunu çalıştırın:

$ sudo zypper install fswatch

Kaynaktan fswatch yükleyin

Dağıtımınız için fswatch mevcut değilse, aşağıda açıklandığı gibi kaynaktan en son sürümü manuel olarak derleyebilir ve kurabilirsiniz.

Derlemeden önce, Linux dağıtımınıza Geliştirme araçlarını yüklemeniz gerekir.

Ardından fswatch kaynak dosyasını buradan indirin.

$ wget https://github.com/emcrisostomo/fswatch/releases/download/1.17.1/fswatch-1.17.1.tar.gz

İndirilen tarball’ı çıkarın:

$ tar -zxvf fswatch-1.17.1.tar.gz 

Projenin klasörüne gidin:

$ cd fswatch-1.17.1/

Son olarak aşağıdaki komutları tek tek çalıştırarak fswatch’ı derleyin ve kurun.

$ ./configure
$ make
$ sudo make install

Son olarak, dinamik kitaplıkların bağlantılarını ve önbelleğini yenilemek için aşağıdaki komutu çalıştırın:

$ sudo ldconfig

Yukarıdaki komutu çalıştırmazsanız, GNU/Linux sistemlerinde aşağıdaki hatayı alabilirsiniz.

fswatch: error while loading shared libraries: libfswatch.so.6: cannot open shared object file: No such file or directory

Son olarak, doğru yüklendiğinden emin olmak için fswatch sürümünü kontrol edin:

$ fswatch --version
fswatch 1.17.1
Copyright (C) 2013-2021 Enrico M. Crisostomo <[email protected]>.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Enrico M. Crisostomo.

FreeBSD’ye fswatch yükleyin

FreeBSD’de fswatch, kök olarak pkg kullanılarak kurulabilir:

# pkg install fswatch-mon

Linux’ta fswatch kullanarak dosya değişikliklerini izleyin

fswatch kullanımı önemli değil. fswatch’ın tipik sözdizimi şöyledir:

$ fswatch [options] ... path-0 ... path-n

fswatch’ın nasıl çalıştığını test etmek için iki Terminal penceresi açın (Onlara Terminal 1 ve Terminal 2 diyelim).

Terminal 1’de, $HOME dizinini izlemek için fswatch komutunu çalıştırın.

$ fswatch /home/ostechnix/

Ve Terminal 2’de dosya/klasör oluşturma, dosyaları silme ve dosyaları değiştirme gibi bazı işlemleri yapın.

Terminal 2’de ne yaparsanız yapın Terminal 1’de bilgilendirilecektir. Aşağıdaki ekran görüntülerine bir göz atın.

Terminal 1 – fswatch komutu çalışıyor ve dosya değişiklikleri izleniyor:

Monitor File Changes Using fswatch
fswatch Kullanarak Dosya Değişikliklerini İzleme

Terminal 2 – Dosyalarda/klasörlerde bazı rastgele değişiklikler yapın:

Do random changes in files or folders
Dosyalarda veya klasörlerde rastgele değişiklikler yapın

Varsayılan olarak fswatch, performans ve kaynak tüketimi açısından mevcut platformda mevcut olan en iyi monitörü seçecektir. Linux’ta varsayılan monitör inotify’dır.

Varsayılan olarak fswatch, CTRL+C tuşlarını kullanarak manuel olarak durdurana kadar dosya değişikliklerini izlemeye devam edecektir.

Monitörleri listele

Mevcut platformdaki mevcut monitörleri listelemek için (yani bizim durumumuzda Linux), şunu çalıştırın:

$ fswatch -M

Veya,

$ fswatch --list-monitors

Örnek çıktı:

inotify_monitor
poll_monitor

Belirli bir dosya veya klasörü izleyin

Belirli bir dosya veya dizini belirli bir monitör seçeneğiyle izlemek için şunu çalıştırın:

$ swatch -m kqueue_monitor /home/ostechnix/

Aşağıdaki komutta gösterildiği gibi -1 seçeneğini belirleyerek ilk olay seti alındıktan sonra da fswatch’dan çıkabilirsiniz:

$ fswatch -1 /home/ostechnix/

Bu komut, ilk olay grubu alındıktan hemen sonra çıkacaktır.

fswatch, belirtilen yoldaki tüm dosya/klasörlerdeki değişiklikleri izleyecektir. Yalnızca dizinlerde yapılan değişiklikleri izlemek istiyorsanız -d seçeneğini kullanın.

$ fswatch -d /home/ostechnix/

Tabii ki, daha fazla seçenek var. Ayrıntılı talimatlar için kılavuz sayfalarına veya projenin dokümantasyon sayfasına bakın.

$ man fswatch

Kaynak: