archivos

  • ¿Cuál es el algoritmo de compresión más rápido?

    Anteriormente comparé los algoritmos de compresión ZIP, bzip2, gzip, RAR, LZMA y ZPAQ para tratar de determinar cuál era el mejor de ellos en término de uso de CPU, tiempo y radio de compresión, con el objetivo de lograr la máxima compresión posible. En esta ocasión voy a repetir el test, pero orientado a lograr la mayor velocidad posible (para que nuestros backups se hagan lo más rápido posible y sin demoras).

  • ¿Cuál es el mejor algoritmo de compresión de archivos?

    Luego de explicar el uso básico de zpaq, se me ocurrió llevar a cabo un pequeño experimento como comparación de rendimiento de diferentes algoritmos de compresión. Veamos un benchmark de tiempo, tamaño de archivo y uso de CPU para diferentes formatos.

  • Análisis forense de inodos con istat

    Para tratar de comprobar qué hace efectivamente con los inodos de un sistema de archivos ext2 un kernel Linux 4.9 al momento de borrar un archivo, descubrí la herramienta istat parte del paquete sleuthkit. Este artículo demuestra cómo volcar el contenido de un inodo de un sistema de archivos ext2/ext3/ext4 por pantalla en Linux.

  • Awk en 20 minutos

    Cada vez que necesito parsear (analizar) texto o archivos, suelo utilizar las herramientas grep, sed y cut. Existe otra herramienta que siempre me resultó desconocida, awk, que es una especie de grep | sed | cut con esteroides. Este interesante artículo que encontré explica su funcionamiento básico en menos de 20 minutos.

  • Borrado seguro de archivos con shred en Linux

    En este episodio veremos cómo eliminar de forma segura un archivo. Es decir, cómo eliminarlo ocultando su contenido previo, sin que sea posible recuperarlo desde el disco. Así sea utilizando costosas herramientas de hardware forense de análisis de discos (herramientas de hardware que analizan los valores magnéticos de los sectores de disco y logran recuperar los datos alojados previamente).

    Hace ya algunos años demostré cómo recuperar imágenes desde una tarjeta de memoria utilizando photorec. Esta herramienta, que se incluye en el paquete testdisk, está diseñada para recuperar datos de videos, documentos y archivos perdidos desde discos rígidos y CDROM; y fotos perdidas (Photo Recovery) desde tarjetas de memoria. PhotoRec ignora el filesystem y accede directamente a los datos crudos, por lo tanto funciona incluso si el sistema de archivos ha sido severamente dañado o formateado.

    La cuestión es que a veces, por cuestiones de seguridad y/o privacidad, es necesario eliminar completamente los datos de un archivo sin dejar rastro alguno. Es decir, borrar uno o varios archivos sin que sea posible recuperarlos utilizando tanto herramientas de software como de hardware.

  • Borrar automáticamente backups de más de 60 días

    Comparto un script sencillo que permite borrar automáticamente backups viejos en un servidor GNU/Linux.

  • Borrar los archivos temporales automáticamente antes de apagar el sistema

    Me volvió a suceder, esta vez en mi Slackware:

    19:41 emi@vaio ~ $ df -h
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda5        29G   27G     0 100% /
    /dev/sda1       1.9G   21M  1.8G   2% /boot
    /dev/sda6        29G   19G  8.0G  70% /home
    /dev/sda8       191G  186G  4.9G  98% /data
    tmpfs           2.0G  4.0K  2.0G   1% /dev/shm
    /dev/sda9       173G  152G   22G  88% /vault
    

    Como podrán observar, estoy algo complicado de espacio en disco. Pero lo torpe fue haber llenado el sistema de archivos raíz /. Muy raro siendo que dicha partición tiene 30 GB. Cosas que suceden por no utilizar un esquema de particionado más sensato (como mínimo montar los directorios /tmp y /var en particiones separadas). Aunque se puede perdonar el descuido por tratarse de un sistema de escritorio.

    El punto es que me sorprendí al encontrar el sistema de archivos raíz colmado, pues tenía la sensación de que había espacio de sobra. Pero lo que más me sorprendió fue ésto:

    /dev/sda5        29G   27G     0 100% /
    

    Si el tamaño total es 29G y tiene 27G utilizados, ¿cómo puede ser que esté 100% en uso y el espacio disponible sea 0?

    Interesante situación, y es la primera vez que me ocurre. Había oído de este caso dialogando con un experto: quedan 2GB de espacio disponible, pero df reporta que el filesystem está lleno, quedan 0 bytes disponibles. ¿A qué se debe ésto? A que se ha llenado la tabla de i-nodos. Por más que queden bloques libres, no quedan i-nodos disponibles para crear nuevos archivos (que puedan utilizar esos bloques libres), sólo es posible que los archivos existentes aumenten su tamaño. Se ha llegado al límite máximo de archivos en el filesystem.

  • Buscar archivos duplicados en GNU/Linux con fdupes

    Esta semana logré rescatar un viejo disco de mi época de Windowsero y me propuse conectarlo para hacerle una "limpieza" de archivos, es decir, hacer un poco más de espacio. La idea era borrar la mayor parte de su contenido y usarlo para guardar backups, pero la nostalgia me impide deshacerme de un montón de archivos y software absolutamente obsoleto (como por ejemplo instaladores de Winamp 2, Firefox 2.0 y hasta una imagen iso de Windows 98 SE).

    Como tenía basura acumulada de muchos años, luego de conectar el disco en mi workstation CentOS, pensé en utilizar una herramienta para buscar archivos duplicados. Buscando rápidamente me topé con fdupes, una herramienta para buscar archivos duplicados o repetidos en GNU/Linux.

  • Buscar archivos modificados en un cierto mes del año

    Tuve la necesidad de encontrar todos los archivos modificados el mes de marzo de 2018. Tarea simple gracias a find.

  • Buscar archivos por contenido usando grep

    En los sistemas de la familia Unix, típicamente utilizamos la herramienta find para buscar archivos por nombre, por fecha de modificación, o tipo, tamaño, etc. Sin embargo puede ser necesario buscar archivos por contenido. Por ejemplo, buscar archivos que incluyan cierta palabra clave dentro de su texto. A tal fin es posible recurrir a grep para realizar búsquedas de texto en archivos (lo que se conoce como full-text search).

  • Buscar archivos por fecha de modificación

    Realizando un análisis forense tuve la necesidad de buscar archivos modificados en una cierta fecha. Los sistemas operativos de la familia UNIX no almacenan la fecha de creación de los archivos, por lo que debe utilizarse la fecha de modificación.

  • Buscar archivos por nombre

    A veces necesitamos buscar un archivo por nombre y nunca recordamos la sintaxis correcta del comando "find" y terminamos desistiendo o utilizando algún bonito buscador con interfaz gráfica. Aunque en realidad, la sintaxis de "find" es muy simple sólo se necesita saber en qué directorio buscar y una parte del nombre del archivo.

  • Buscar archivos por nombre utilizando comodines correctamente

    A veces tenemos el problema de no recordar donde se encuentra un archivo, entonces es necesario buscarlo. Para esto, sólo hace falta recordar el nombre, o parte del nombre, del archivo. En GNU/Linux, el comando find busca archivos en una jerarquía de directorios. Para los usuarios novicios (o quienes vienen desde otro sistema operativo) puede resultar dificil o desconocido ya que find es una de las herramientas más completas, complejas y poderosas de la consola/terminal/línea de comandos/shell. Por eso en este artículo explico cómo buscar correctamente archivos por nombre utilizando comodines (wildcards), por ejemplo astreriscos y símbolos de pregunta.

  • Buscar los archivos creados por un usuario específico en Linux

    Tuve la necesidad de buscar en un servidor los archivos que fueron creados por un usuario en particular, más específicamente "www-data" (usuario con el que corre Apache en los sistemas Debian y derivados). Esto fue lo único que se me ocurrió hasta el momento para encontrarlos (sin recurrir a auditd).

  • Buscar y reemplazar en múltiples archivos al mismo tiempo con find y sed

    Un servidor de bases de datos con muchas instancias cambió su nombre de host, por razones que no vienen al caso. Al hacer esto, es necesario cambiar la configuración de todas las aplicaciones que hacen uso de las bases de datos alojadas en el mismo para que apunten al nuevo host (de lo contrario no podrán acceder a las bases de datos y por ende no funcionarán). Afortunadamente todas las aplicaciones se encuentran en el mismo servidor, con lo cual no es necesario recurrir a Ansible para editar archivos en múltiples servidores al mismo tiempo. Sin embargo, la cantidad de aplicaciones que se conectan al servidor de bases de datos es enorme:

    root@www:/usr/local/apps# ls -1 . | wc -l
    98
    

    98 aplicaciones en total, en las cuales se debe cambiar el valor de la variable db_host en cada archivo de configuración config.ini. ¿Cómo hacer para no tener que editar 98 archivos de configuración a mano? Este artículo demuestra cómo utilizar find y sed en conjunto para buscar todos los archivos de configuración config.ini y cambiar una cadena en cada uno de ellos.

  • Cómo "destripar" una ruta a un nombre de archivo en Linux

    Este artículo tal vez les pueda servir al momento de desarrollar un script Bash. Existe una herramienta en Linux, llamada basename que permite desmenuzar una ruta a un archivo. Es decir, permite remover tanto la ruta al directorio como cualquier sufijo o extensión.

  • Cómo borrar líneas de un archivo utilizando sed

    Los ejemplos que presento en este artículo pueden ser útiles cuando necesitamos borrar rápidamente muchas líneas de un archivo.

  • Cómo borrar los archivos eliminados de MediaWiki

    Hoy me propuse hacer una limpieza de un sitio MediaWiki para recuperar el espacio en disco utilizado por archivos innecesarios u obsoletos. El problema es que, al eliminar un archivo (por ejemplo en la lista de archivos, accesible desde el menú "Páginas especiales > Lista de archivos"), éste no se elimina en absoluto. Sólo se restringe el acceso, quedando tanto referencias al archivo en la base de datos como el archivo mismo en disco. Esto se debe al mecanismo de control de cambios e historial propio de MediaWiki, que permite deshacer cualquier edición, incluso recuperar un archivo borrado. En este artículo voy a explicar cómo eliminar definitivamente un archivo subido a un sitio MediaWiki.

  • Cómo borrar un archivo si su nombre comienza con guión del medio (-)

    En general es difícil crear un archivo cuyo nombre comience con guión del medio (-), ya que la mayoría de los comandos lo interpretan como un caracter especial para indicar opciones y parámetros. Pero a veces puede suceder que al escribir mal un comando, terminemos creando un archivo cuyo nombre comienza con guión. En este artículo presento el truco necesario para poder borrarlo, cortesía de man rm.

  • Cómo buscar archivos por nombre

    A veces uno se encuentra con el problema de no recordar donde puso un archivo, entonces es necesario buscarlo. Para esto, sólo es necesario recordar el nombre (o parte del nombre) del archivo. Para buscar archivos por nombre en GNU/Linux es posible utilizar las herramientas find y locate (estaba escribiendo "los comandos" pero me arrepentí y borré, en general no me gusta utilizar la palabra "comando" ya que los usuarios menos expertos suelen tenerle pánico a la misma, un "comando" es una porción de texto críptico, escrito en un lenguaje que sólo entienden las computadoras, que realiza tareas incomprensibles y puede causar la destrucción total del planeta, en cambio una "herramienta" es algo que nos facilita la vida).