Есть ли способ уменьшить запись каталога?
Мои директории dovecot maildir увеличились в размерах с 4096 по умолчанию до нескольких мегабайт, и это портит дисковые квоты.
Единственный способ, который я нашел, это удалить и воссоздать каталог. Я надеюсь, что где-то есть магическая функция - я открыт для всего, кроме ассемблера с ручной кодировкой.
Изменить: Для потомков, чтобы найти директивы> 4096:
find / -type d -size +4k -printf "%s\t%p\t%i\n" | sort -nr
Ответы:
Смотрите также rm о каталоге с миллионами файлов ; касательно, но мы обсуждаем это там.
Насколько я знаю, по крайней мере в ext2 / 3 нет, нет (онлайн) способа уменьшить их до удаления + повторного создания. Несмонтированный, некоторые источники предполагают, что
e2fsck -D
может работать, хотя я не могу требовать никакого личного опыта с этой опцией.Некоторые ссылки для дальнейшего чтения:
источник
Недавно мне пришлось удалить и воссоздать каталог NFS, чтобы уменьшить его размер после того, как он ранее раздулся. В процессе я нашел довольно эффективный способ сделать это, используя rsync и жесткие ссылки. Этот метод позволяет избежать копирования реальных файлов, при этом выполняя задачу воссоздания каталога с тем же содержимым.
Поскольку нам требовалось время простоя для выполнения этой операции во время нашего окна обслуживания, для нас было важно сделать доступным перестроенный каталог как можно скорее. Если для вас важнее простота, измените первую команду перемещения на «rm -rf» в исходном каталоге и пропустите другую команду «rm -rf».
Я извлек эти команды из более крупного процесса и абстрагировал имена каталогов, поэтому извиняюсь за ошибку в этом переводе.
Затем позже мы удалим каталог. В зависимости от размера, вам может понадобиться более сложная техника для этого. Например, использование rsync с флагом --delete для синхронизации пустого каталога в этом каталоге может быть более эффективным.
источник
Я бы сделал это так
cp -al
oldirNEWDIR
&& mv
olddirtempname
&& mv
NEWDIRolddir
&& rm -r
tempnameгде olddir - это каталог, который вы хотите сжать. newdir, а tempname - временные имена файлов.
cp -al
создает ссылки на содержимое olddir в newdir, а следующие три команды меняют их на newdir и очищают.источник