Dizin boyutunu küçültmek / sıfırlamak? | m24sniperweaponsystem.com
Bir dizin girişini küçültmenin bir yolu var mı?
Benim dovecot maildir dizinleri varsayılan 4096 Birkaç mega ve disk kotaları ile uğraşıyor.
Bulduğum tek yol, dizini silmek ve yeniden oluşturmaktır. Bir yerlerde büyülü bir işlev olduğunu umuyorum - El kodlu assembler haricinde her şeye açıkım.
Düzenle: Kimlilik için, direkleri bulmak> 4096:
find / -type d -size +4k -printf "%s\t%p\t%i\n" | sort -nr
Ayrıca bkz. stackoverflow.com/questions/4303008/... - oliver
Ayrıca bakınız milyonlarca dosya içeren bir dizinde rm; Teğetsel olarak ilgili, ama orada tartışıyoruz.
Bildiğim kadarıyla, en azından ext2 / 3'te, hayır, onları silme + yeniden oluşturma kısaltmak için hiçbir (çevrimiçi) yol yoktur. Sökülen, birkaç kaynak önermek e2fsck -D Bu seçenekle kişisel deneyim istemediğim halde işe yarayabilir.
Daha fazla okuma için bazı referanslar:
İlk bağlantı özellikle yardımcı oldu: özel olarak sorunumu çözdü (posta sunucuları) ve Ted Tso'nun diyalogda tartılması gerçeği oldukça havalı;) - mikewaters
Son zamanlarda daha önce şişirilmiş sonra boyutunu küçültmek için bir NFS dizini silmek ve yeniden oluşturmak zorunda kaldım. Bu süreçte, rsync ve hard linkleri kullanarak bunu yapmak için oldukça verimli bir yol buldum. Bu yöntem, aynı dosyaların bulunduğu dizini yeniden oluşturma amacını gerçekleştirirken, gerçek dosyaları kopyalamayı önler.
Bakım operasyonumuz sırasında bu işlemi yapmak için aksama sürememiz gerektiğinden, yeniden oluşturulmuş dizinin mümkün olan en kısa zamanda hazır hale getirilmesi bizim için önemliydi. Basitlik sizin için daha önemliyse, ilk hareket komutunu kaynak dizinde bir 'rm -rf' olarak değiştirin ve diğer 'rm -rf' komutunu atlayın.
Bu komutları daha büyük bir süreçten çıkardım ve dizin isimlerini soyutladım, o yüzden bu çeviride bir hata yapsam özür dilerim.
rsync -ai --delete --link-dest=/path/to/source_dir/ /path/to/source_dir/ /tmp/holding_dir/
mv /path/to/source_dir/ /tmp/deleteme/
mv /tmp/holding_dir/ /path/to/source_dir/
Daha sonra, dizini kaldırırız. Boyutu bağlı olarak, bunu yapmak için daha karmaşık bir teknik kullanmanız gerekebilir. Örneğin, boş bir dizini bu dizine eşitlemek için rsync'i --delete bayrağı ile kullanmak daha verimli olabilir.
rm -rf /tmp/deleteme/
Bunu böyle yapardım.
cp -aloldirnewdir&& mvolddirtempname&& mvnewdirolddir&& rm -rtempname
nerede olddir küçültmek istediğiniz dizindir newdir ve tempname geçici dosya isimleri
cp -al içeriğine bağlantılar oluşturur olddir içinde newdir ve sonraki üç komut onları yenile ile değiştirip temizler.
Amazon EC2 örneklerine en yakın Vagrant kutusu Kendi kendine çevrimiçi yedekleme için yazılım [kapalı] Birden çok disk üzerinde grub nasıl kurulur? apache'de http POST günlüğe kaydediliyor mu? Canlı web sunucusu geçişi ZPOOL Ayna kurulumu Benim / var / log / btmp dosyam çok büyük! Ne yapmalıyım?