Web sitesi ve özellikle index i ve hiti yüksek siteler yönetiyorsanız mutlaka 10 gb üzerinde dosya yada klasörleri silme ihtiyacınız oluşmuştur yada olacağına emin olabilirsiniz. Ben genelde Cache dosyaları üzerinde silme işlemi yapma ihtiyacı duyuyorum en son sildiğim klasörün boyutu 30 GB civarındaydı.
rm -f testdoysa
-f parametresi onay istemeden silme işlemini gerçekleştirecektir.
rm -rf testklasor
-rf paramresi onay istemenen hedef gösterilen klasörü, alt klasörlerini ve dosyaları silme işlemini gerçekleştirecektir.
rmdir testklasor
Sadece içi boş klasörleri silebilir.
Örnek test klasörü içerisinde bulununa dosyarı sil.
# find /home/husonet/test -type f -exec rm {} \;
-type f parametresi file tipinde olanları işaret etmektedir.
Örnek test klasörü içerisinde 7 gün önce değiştirilmiş olanları bul ve sil.
# find /home/husonet/test -mtime +7 -exec rm {} \;
-mtime +7 parametresi zaman olarak 7 gün önceleri işaret eder.
Örnek test klasörü içerisindeki 7 mb ve büyük olan dosyaları bul ve sil.
# find /home/husonet/test -size +7M -exec rm {} \;
-size 7mb parametresi 7MB ve büyük dosyaları işaret eder.
# for i in $(seq 1 1000000); do echo testing >> $i.txt; done
Artık silme işlemine başlayacağımız test dosyalarımız hazır en hızlı bu dosyaları nasıl silebiliriz testlerimize başlayabiliriz.
huso@husonet:~/test$ time rm -f *
bash: /bin/rm: Argument list too long
real 0m8.906s
user 0m8.141s
sys 0m0.636s
Malesef rm tek başına bir milyon dosyayı silme işlemini gerçekleştiremedi.
Şimdi bu dosyaları find komutu içerisinde tek tek erişerek silme komutumuzu çalıştıralım.
huso@husonet:~/test$ time find ./ -type f -exec rm {} \;
real 387m3.872s
user 3m35.825s
sys 347m25.055s
huso@husonet:~/test$ time find ./ -type f -delete
real 53m19.683s
user 0m0.568s
sys 0m20.021s
Sonuç inanılmaz 1.000.000 dosya 1 dakika gibi kısa bir sürede silindi. Sanırım perl bu hususta en hızlı olacak gibi!
Boş Klasor: /home/huso/bostest
Boşaltılacak klasör: /home/huso/test
huso@husonet:~$ time rsync -a --delete bostest/ test/ real 1m2.108s user 0m1.252s sys 0m19.909s
Sonuç şaşırtıcı RSYNC silme işlemini çok başarılı bir şekilde halletti
RM Komutu büyük sayıda dosyalarla uğraşma kabiliyeti malesef yok.
Find komutu -exec ile kullanıldığında 1.000.000 dosyayı 387 dakikada silebiliyor.
Find komutu -delete ile kullanıldığında 1.000.000 dosyayı 53 dakikada silebiliyor.
Perl dili 1.000.000 dosyayı 1 dakika 3 saniye civarında siliyor.
RSYNC komutu -delete ile kullanıldığında 1.000.000 dosyayı 1 dakika 2 saniye civarında silebiliyor.
Yorumlar
Çok bilgilendirici ve faydalı olmuş. Ben faydalandım. Teşekkür ederim.
Tebrikler. Gayet açıklayıcı ve bilgi verici makale olmuş. Faydalandım teşekkür ederim.