`Updatedb` programı neden bu kadar hızlı çalışıyor?


22

Genellikle tam disk taraması yapan ve sistemdeki tüm dosyaları tarayan programlar çalıştığında çok uzun zaman alıyorlar. Updatedb niçin bu kadar hızlı çalışıyor?

Yanıtlar:


22

Cevap sürümüne bağlıdır locatekullandığınız size, ama bu adil bir şans var mlocateolan, updatedbçabuk çalışır tam disk taramaları yaparak kaçınarak:

mlocate bir tespit / updatedb uygulamasıdır. 'M' "birleştirme" anlamına gelir: updatedb, varolan veritabanını, dosya sisteminin çoğunu yeniden okumaktan kaçınmak için kullanır; bu, updatedb işlemlerini daha hızlı yapar ve sistem önbelleklerini çok fazla sarmaz.

(Veri tabanı, her bir yönetmenin zaman damgasını ctimeveya mtimehangisi daha yeniyse saklar .)

Çoğu uygulamaları gibi updatedb, mlocate'ın da dosya sistemlerini ve görmezden yapılandırıldı yolları atlayacak. Varsayılan olarak orada hiçbiri mlocatebireyin durumda, ancak dağılımları tipik bir temel sağlamak updatedb.confvb ağa dosya sistemlerini, sanal dosya sistemlerini göz ardı eden (bkz Debian'ın yapılandırma dosyasını örneğin; GNU o kadar bu, Debian standart bir uygulamadır updatedbedilir benzer şekilde yapılandırılmış ).


Oldukça iyi bir soru ve cevap, "farklı" taramalar olduğunu bile bilmiyordum.
Rui F Ribeiro

1
Teşekkürler! Bir dosyayı değiştirmenin tüm ana dizinlerinin ctime ve mtime değerlerini de değiştirdiğini hiç farketmemiştim.
hugomg

4
@hugomg Aslında olduğunu sanmıyorum. Sadece mtimeani ebeveyni değiştirmelidir.
Kusalananda

Bu yüzden doğru anladıysam eğer, mlocatehakkında umurunda ctimeve mtimehangi yalnızca dizin girişlerinin listesi hala gerçek dosyaları hakkında kendilerini umursamayan araçlar aynı (hayır kaldırılabilir veya ekledi dosyaları), olup olmadığı umurunda ima eder. Bu doğru mu ?
Sergiy Kolodyazhnyy

@Sergiy: Tabii ki. locatedeğil grep -R. Dosya içeriğini okumaz.
Kevin

9

Değişiklik zamanlarını kontrol mlocateetmenin yanı sıra, /etc/updatedb.conf dosyasında (ve man updatedb.conf dosyasında tanımlandığı gibi) çok sayıda ilginç veya potansiyel olarak yinelenen dosya içeren dosya sisteminin belirli alt ağaçlarını da yok sayar :

  • Bağlama bağları
  • Bazı dosya sistemleri (9p, afs, bdev, etc)
  • VCS depo veritabanları (.git, .hg, etc)
  • Bazı kodlanmış dizinler (/ medya, / tmp, / var / spool / cups, vb.).

Varsayılan olarak durum böyle değil, dolayısıyla temel davranış kullanılan dağıtıma bağlı. (Diğer updatedbuygulamalar da yapılandırılmış istisnaları destekler.)
Stephen Kitt,

Aslında. Fedora'nın varsayılanlarını tarif ediyordum.
hugomg
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.