Analizando cómo escala el espacio de almacenamiento en una aplicación Web, tuve la necesidad de generar una clasificación de archivos, ranking, por tipo MIME. De esta forma pude conocer cuáles son los tipos de archivo más frecuentemente subidos por los usuarios a un espacio de almacenamiento en la nube, sobre todo teniendo en cuenta que la aplicación Web en cuestión ofusca los nombres de archivo aplicando una técnica de hash (una práctica de seguridad muy utilizada actualmente).
En el servidor en cuestión, ejecuté el siguiente comando para crear el ranking de tipos de archivo:
[root@centos ~]# find /datos -type f -exec file -b -p --mime-type '{}' \; | sort | uniq -c | sort -nr 4273 text/plain 4039 text/x-c 2651 application/x-object 541 text/x-pascal 117 text/x-shellscript 110 text/x-c++ 62 application/octet-stream 57 application/x-sharedlib 52 text/x-asm 29 text/x-makefile 25 application/x-empty 24 text/x-perl 24 application/xml 22 text/html 21 text/x-python 18 application/x-executable 14 text/x-java 9 application/zip 8 text/x-php 7 application/x-gzip 7 application/x-archive 3 text/x-tex 3 text/x-diff 3 application/pdf 2 text/x-m4 2 text/x-fortran 2 image/x-ms-bmp 2 application/x-bzip2 1 text/x-ruby 1 text/troff 1 image/x-ico 1 image/svg+xml 1 application/x-rpm
Destripando el comando
find /datos -type -f
Busca recursivamente todos los archivos (excluyendo directorios), a partir del directorio /datos
.
-exec file -b -p --mime-type '{}' \;
Sobre cada archivo encontrado, ejecuta el comando file
para obtener su tipo (--mime-type
), excluyendo el nombre del archivo en la salida (-b
), sin modificar su fecha de acceso (-p
).
| sort | uniq -c | sort -nr
Ordena la salida alfabéticamente ( | sort
), luego agrupa y contabiliza los tipos iguales ( | uniq -c
), y finalmente ordena numéricamente y de forma descendente para elaborar el ranking ( | sort -nr
).
Espero que les haya gustado.