Cara memadatkan direktori

21

Seringkali, beberapa aplikasi berjalan liar dan mengisi direktori dengan sejumlah besar file. Setelah kami memperbaiki bug dan membersihkan file, direktori tetap besar (> 50MB) meskipun hanya ada 20-30 file di dalamnya.

Apakah ada perintah yang memadatkan direktori tanpa harus membuatnya kembali?

Poin bonus: apakah direktori kosong besar memengaruhi kinerja akses direktori itu? Saya berasumsi demikian, tapi mungkin tidak ada gunanya mengganggu. Tampaknya lebih lambat untuk dilakukan lspada direktori seperti itu.

Mathieu Longtin
sumber
Saya tidak berpikir ada hal seperti itu (tapi saya tentu saja bisa sepenuhnya salah). Mungkin beberapa alat khusus filesystem - FS apa yang Anda gunakan?
Mat
ext3, tapi saya sudah melihat masalah itu pada kebanyakan filesystem yang pernah saya tangani di dunia unix. Saya juga tidak berpikir ada alat seperti itu, tetapi saya ingin terbukti salah.
Mathieu Longtin
4
Saya menandai pertanyaan Anda "ext3" karena pertanyaan ini sangat spesifik untuk sistem berkas. Saya tidak tahu jawaban untuk ext3 (saya curiga Anda perlu membuat ulang direktori untuk menyusut) tetapi apakah Anda sudah mencoba memaksa fsck? ext3's fsckmemiliki pass "Mengoptimalkan direktori". Saya tidak tahu apa fungsinya, tapi mungkin itu menyusutkan direktori yang terlalu besar? Lagi pula, sebagai titik data FWIW, xfs melakukan autoshrink ke direktori yang memiliki file yang dihapus dari mereka.
Celada
Apakah Anda secara kebetulan menghapus file terbuka?
Karlson
1
ufs pada BSDs dan Mac HFS keduanya menyusutkan direktori dengan cepat juga. Saya terkejut mengetahui bahwa ext3 tidak. ext4 tampaknya tidak melakukannya juga.
Kyle Jones

Jawaban:

10

Anda menjalankan e2fsck -Dsistem file yang tidak di-mount.

psusi
sumber
1
Saya berharap untuk sesuatu yang kurang mengganggu.
Mathieu Longtin
1
@MathieuLongtin, Anda juga bisa memindahkan semuanya ke direktori baru, menghapus yang lama, dan mengganti nama yang baru kembali.
psusi
Saya tahu tentang trik itu, tetapi bisa mengacaukan proses menggunakan direktori sebagai direktori kerja saat ini.
Mathieu Longtin