Как сжать каталог


21

Время от времени, какое-то приложение запускается вхолостую и заполняет каталог огромным количеством файлов. Как только мы исправим ошибку и очистим файлы, каталог останется большим (> 50 МБ), хотя в нем всего 20-30 файлов.

Есть ли какая-нибудь команда, которая сжимает каталог, не создавая его заново?

Бонусные баллы: огромный пустой каталог влияет на производительность доступа к этому каталогу? Я предполагаю, что это так, но, возможно, это не стоит беспокоиться. Кажется, медленнее делать lsв таком каталоге.


Я не думаю, что есть такая вещь (но я, конечно, могу быть совершенно не прав). Может быть, некоторые инструменты для конкретной файловой системы - какую FS вы используете?
Мат

ext3, но я видел эту проблему на большинстве файловых систем, с которыми я сталкивался в мире Unix. Я тоже не думаю, что есть такой инструмент, но я бы хотел оказаться неправым.
Матье Лонгтин

4
Я отметил ваш вопрос "ext3", так как этот вопрос очень специфичен для файловой системы. Я не знаю ответа для ext3 (я подозреваю, что вам нужно пересоздать каталог, чтобы уменьшить его), но пытались ли вы форсировать fsck? У ext3 fsckесть проход «Оптимизирующий каталог». Я не знаю, что это делает, но, может быть, это сокращает слишком большие каталоги? В любом случае, как точка данных FWIW, xfs автоматически сжимает каталоги, из которых были удалены файлы.
Селада

Вы случайно удалили открытые файлы?
Карлсон

1
UFS на BSD и Mac HFS также сокращают каталоги на лету. Я удивлен, узнав, что ext3 нет. ext4, похоже, тоже этого не делает.
Кайл Джонс

Ответы:


10

Вы работаете e2fsck -Dв размонтированной файловой системе.


1
Я надеялся на что-то менее разрушительное.
Матье Лонгтин

1
@MathieuLongtin, вы также можете переместить все в новый каталог, удалить старый и переименовать новый обратно.
Псуси

Я знал об этом приеме, но он может испортить процессы, используя каталог в качестве текущего рабочего каталога.
Матье Лонгтин
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.