GNU/Linux >> Linux Esercitazione >  >> Linux

Ridurre/ripristinare le dimensioni della directory?

Soluzione 1:

Vedi anche rm su una directory con milioni di file; tangenzialmente correlato, ma ne discutiamo lì.

Per quanto ne so, almeno su ext2/3, no, non esiste un modo (online) per ridurli a meno di eliminare + ricreare. Smontato, diverse fonti suggeriscono e2fsck -D potrebbe funzionare, anche se non posso rivendicare alcuna esperienza personale con tale opzione.

Alcuni riferimenti per ulteriori letture:

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

Soluzione 2:

Di recente ho dovuto eliminare e ricreare una directory NFS per ridurne le dimensioni dopo che si era gonfiata in precedenza. Nel processo, ho trovato un modo abbastanza efficiente per farlo usando rsync e hard link. Questo metodo evita di copiare i file effettivi, pur raggiungendo l'obiettivo di ricreare la directory con gli stessi contenuti.

Poiché avevamo bisogno di tempi di inattività per eseguire questa operazione durante la nostra finestra di manutenzione, per noi era importante rendere disponibile la directory ricostruita il prima possibile. Se la semplicità è più importante per te, cambia il primo comando di spostamento in un 'rm -rf' nella directory di origine e salta l'altro comando 'rm -rf'.

Ho estratto questi comandi da un processo più ampio e ho estratto i nomi delle directory, quindi mi scuso se ho commesso un errore nella traduzione.

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/

Successivamente, rimuoviamo la directory. A seconda delle dimensioni, potrebbe essere necessario utilizzare una tecnica più sofisticata per eseguire questa operazione. Ad esempio, utilizzare rsync con il flag --delete per sincronizzare una directory vuota in questa directory potrebbe essere più efficiente.

rm -rf /tmp/deleteme/

Soluzione 3:

Lo farei così.

cp -al vecchiodir nuovadir && mv olddir nometemp && mv nuovadir olddir && rm -r nometemp

dove olddir è la directory che vuoi ridurrenuovadir e tempname sono nomi di file temporanei

cp -al crea collegamenti al contenuto di olddir in nuovadir e i successivi tre comandi scambiali con newdir e pulisci.


Linux
  1. Cosa significa la dimensione di una directory nell'output del comando 'ls -l'?

  2. Linux:come combinare l'albero con la dimensione della directory?

  3. Controllo della dimensione della directory con du Command in Linux

  4. Reimposta una password utente di Active Directory

  5. Perché la dimensione di una directory è sempre di 4096 byte in unix?

Come ottenere la dimensione di una directory in Linux

Come ottenere la dimensione di una directory in Linux

Come trovare la dimensione di una directory in Linux

Come trovare la dimensione totale di una directory in Linux

Come reimpostare la password utente amministratore weblogic

Come controllare la dimensione di file e directory su Linux