I file sparsi sono file a cui è preallocata una grande quantità di spazio, senza occupare l'intera quantità dal filesystem. Sono utili per ridurre la quantità di tempo e spazio su disco coinvolti nella creazione di filesystem di loop o immagini di dischi di grandi dimensioni per guest virtualizzati, tra le altre cose. Con il termine “cartella sparsa” si intende quella contenente “buchi”; è facile riconoscerne uno su un sistema in esecuzione perché il suo utilizzo del disco è inferiore alle sue dimensioni. Possiamo vedere questo comportamento con /var/log/lastlog file.
# ls -lh /var/log/lastlog -rw-r--r--. 1 root root 286K Dec 3 04:50 /var/log/lastlog # du -sh /var/log/lastlog 12K /var/log/lastlog
Trovare file sparsi
Ora il processo di cui sopra può identificare i file sparsi nel sistema, ma diventa complicato trovare tutti i file sparsi in un filesystem o in una directory, specialmente quando sono molti. Non preoccuparti, c'è un'opzione nel comando trova che ci aiuta a trovare tutti i file sparsi in una volta sola. Vediamo un esempio qui sotto.
1. Usa il comando trova con “%S ” per trovare la rarità di ogni file.
# find /var/log -type f -printf "%S\t%p\n" # find /var/log -type f -printf "%S\t%p\n" 1 /var/log/tallylog 1.00095 /var/log/audit/audit.log.1 0.0419982 /var/log/lastlog ....
2. Il valore visualizzato nella colonna più a sinistra è (BLOCK-SIZE*st_blocks / st_size ) che normalmente è inferiore a 1.0 in caso di file sparse.
3. Se vuoi trovare tutti i file sparsi sul sistema, possiamo filtrare tutti i file con i valori della colonna più a sinistra inferiori a 1.
# find / -type f -printf "%S\t%p\n" | gawk '$1 < 1.0 {print}' 0.0139994 /var/log/lastlog 0.959592 /usr/lib/locale/locale-archive ...