Czy istnieje sposób na zmniejszenie pozycji katalogu?
Moje katalogi maildir dovecot zwiększyły swój rozmiar z domyślnego 4096 do kilku megabajtów, i to jest bałagan z przydziałami dysku.
Jedyny sposób, który znalazłem, to usunięcie i ponowne utworzenie katalogu. Mam nadzieję, że gdzieś jest magiczna funkcja - jestem otwarty na wszystko, z wyjątkiem ręcznie kodowanego asemblera.
Edycja: Dla potomnych, aby znaleźć kierunki> 4096:
find / -type d -size +4k -printf "%s\t%p\t%i\n" | sort -nr
Odpowiedzi:
Zobacz także rm w katalogu z milionami plików ; stycznie spokrewnione, ale omawiamy to tam.
O ile mi wiadomo, przynajmniej na ext2 / 3, nie, nie ma (online) sposobu, aby zmniejszyć je bez usuwania + odtwarzania. Wiele źródeł sugeruje
e2fsck -D
, że nie został zamontowany, ale nie mogę twierdzić, że korzystam z tej opcji.Niektóre odniesienia do dalszego czytania:
źródło
Niedawno musiałem usunąć i ponownie utworzyć katalog NFS, aby zmniejszyć jego rozmiar po wcześniejszym rozdęciu. W trakcie tego procesu znalazłem dość wydajny sposób, aby to zrobić za pomocą rsync i twardych linków. Ta metoda pozwala uniknąć kopiowania rzeczywistych plików, jednocześnie osiągając cel ponownego utworzenia katalogu z tą samą zawartością.
Ponieważ potrzebowaliśmy przestoju, aby wykonać tę operację podczas naszego okna konserwacji, udostępnienie przebudowanego katalogu tak szybko, jak to możliwe, było dla nas ważne. Jeśli prostota jest dla Ciebie ważniejsza, zmień pierwsze polecenie przeniesienia na „rm -rf” w katalogu źródłowym i pomiń inne polecenie „rm -rf”.
Wyodrębniłem te polecenia z większego procesu i wyodrębniłem nazwy katalogów, więc przepraszam, jeśli popełniłem błąd w tym tłumaczeniu.
Następnie usuwamy katalog. W zależności od rozmiaru może być konieczne użycie bardziej wyrafinowanej techniki. Na przykład użycie rsync z flagą --delete do synchronizacji pustego katalogu z tym katalogiem może być bardziej wydajne.
źródło
Zrobiłbym to w ten sposób.
cp -al
oldirnewdir
&& mv
olddirtempname
&& mv
newdirolddir
&& rm -r
tempnamegdzie olddir to katalog, który chcesz zmniejszyć newdir, a nazwa tymczasowa to tymczasowe nazwy plików
cp -al
tworzy linki do zawartości olddir w newdir, a następne trzy polecenia zamieniają je newdir i oczyszczają.źródło