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.


Tal vez pueda interesarte


Compartí este artículo