GNU/Linux >> Znalost Linux >  >> Linux

Zmenšit/resetovat velikost adresáře?

Řešení 1:

Viz také rm o adresáři s miliony souborů; tečně souvisí, ale tam o tom diskutujeme.

Pokud je mi známo, alespoň na ext2/3, ne, neexistuje žádný (online) způsob, jak je zmenšit tak, aby nebylo možné odstranit + znovu vytvořit. Odpojeno, několik zdrojů navrhuje e2fsck -D může fungovat, i když nemohu tvrdit, že s touto možností nemám osobní zkušenost.

Některé odkazy pro další čtení:

  • http://linux.derkeiler.com/Mailing-Lists/Kernel/2009-05/threads.html#06569
  • http://fedoraforum.org/forum/showthread.php?t=120654

Řešení 2:

Nedávno jsem musel smazat a znovu vytvořit adresář NFS, abych zmenšil jeho velikost poté, co se předtím nafoukl. V tomto procesu jsem našel poměrně efektivní způsob, jak toho dosáhnout pomocí rsync a pevných odkazů. Tato metoda se vyhýbá kopírování skutečných souborů, přičemž stále dosahuje cíle znovu vytvořit adresář se stejným obsahem.

Vzhledem k tomu, že jsme během období údržby potřebovali provést tuto operaci, bylo pro nás důležité co nejdříve zpřístupnit přestavěný adresář. Pokud je pro vás důležitější jednoduchost, změňte první příkaz pro přesun na 'rm -rf' ve zdrojovém adresáři a přeskočte druhý příkaz 'rm -rf'.

Tyto příkazy jsem extrahoval z většího procesu a abstrahoval názvy adresářů, takže se omlouvám, pokud jsem v překladu udělal chybu.

mkdir /tmp/holding_dir/
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/

Později adresář odstraníme. V závislosti na velikosti k tomu možná budete muset použít sofistikovanější techniku. Například použití rsync s příznakem --delete k synchronizaci prázdného adresáře do tohoto adresáře může být efektivnější.

rm -rf /tmp/deleteme/

Řešení 3:

Udělal bych to takhle.

cp -al oldir newdir && mv olddir tempname && mv newdir olddir && rm -r tempname

kde olddir je adresář, který chcete zmenšitnewdir a tempname jsou dočasné názvy souborů

cp -al vytváří odkazy na obsah olddir v newdir a další tři příkazy je zamění za newdir a uklidí.


Linux
  1. Linux – jak zkombinovat strom s velikostí adresáře?

  2. Kontrola velikosti adresáře pomocí příkazu du v systému Linux

  3. Jak získat velikost adresáře v Linuxu

  1. Proč je velikost adresáře v unixu vždy 4096 bajtů?

  2. Jak získat skutečnou velikost adresáře (mimo du)?

  3. Získat velikost všech složek v adresáři

  1. Zmenšete velikost PDF pomocí tohoto triku s příkazovým řádkem

  2. Obnovte heslo uživatele služby Active Directory

  3. Jak vypsat velikost adresáře všech podřízených adresářů?