Dtrx: una herramienta de extracción de archivos inteligente (tar, zip, cpio, rpm, deb, rar) para Linux


Todos nosotros podríamos haber enfrentado una situación en algún momento u otro mientras usábamos los comandos tar.gz, tar.bz2, tbz de Linux. Tantos tipos de archivos, tantos comandos para recordar… Bueno, ya no, gracias a la herramienta dtrx.

  1. 18 comandos Tar para crear y extraer archivos en Linux
  2. Cómo abrir, extraer y crear archivos RAR en Linux

¿Qué es Dtrx?

Dtrx significa "Do The Right Extraction", es una aplicación de línea de comandos de código abierto y muy efectiva para sistemas * nix que simplifica su trabajo de extracción de archivos más fácilmente.

El comando dtrx es un reemplazo de los comandos "tar -zxvf" o "tar -xjf" y proporciona un solo comando para extraer archivos en varios formatos diferentes, incluidos tar, zip, rpm, deb, gem, 7z, cpio, rar y muchos más. También se puede utilizar para descomprimir archivos comprimidos con bzip2, gzip, etc.

De forma predeterminada, dtrx extrae el contenido en un directorio dedicado y también corrige los problemas de permisos (como el permiso denegado) que enfrenta el usuario mientras extrae contenido para garantizar que el propietario pueda leer y escribir todos esos archivos.

Funciones de Dtrx

  1. Maneja muchos tipos de archivos: proporciona solo un comando simple para extraer tar, zip, rar, gz, bz2, xz, rpm, deb, gem, archivos zip autoextraíbles y muchos otros formatos de archivos exe.
  2. Mantiene todo organizado: extraerá archivos en sus propios directorios dedicados.
  3. Permisos sanos: también se asegura de que el usuario pueda leer y escribir todos esos archivos después de la extracción, manteniendo el permiso intacto.
  4. Extracción recursiva: puede encontrar archivos dentro del archivo y extraerlos también.

Cómo instalar Dtrx en Linux

La herramienta dtrx está incluida de forma predeterminada en los repositorios de Ubuntu, todo lo que tienes que hacer es simplemente hacer un apt-get para instalar en tu sistema.

$ sudo apt-get install dtrx

En los sistemas basados en Red Hat, dtrx no está disponible a través de repositorios predeterminados, necesita descargar un script dtrx e instalar el programa en todo el sistema usando los siguientes comandos como usuario root.

# wget http://brettcsmith.org/2007/dtrx/dtrx-7.1.tar.gz
# tar -xvf dtrx-7.1.tar.gz 
# cd dtrx-7.1
# python setup.py install --prefix=/usr/local
running install
running build
running build_scripts
creating build
creating build/scripts-2.6
copying and adjusting scripts/dtrx -> build/scripts-2.6
changing mode of build/scripts-2.6/dtrx from 644 to 755
running install_scripts
copying build/scripts-2.6/dtrx -> /usr/local/bin
changing mode of /usr/local/bin/dtrx to 755
running install_egg_info
Creating /usr/local/lib/python2.6/site-packages/
Writing /usr/local/lib/python2.6/site-packages/dtrx-7.1-py2.6.egg-info

Cómo utilizar el comando dtrx

El comando dtrx es como el anillo único para gobernarlos a todos en El señor de los anillos. En lugar de tener que recordar la sintaxis de cada archivo, todo lo que tiene que recordar es el comando dtrx.

Por ejemplo, quiero extraer un archivo de almacenamiento llamado "tecmint27-12-2013.gz", solo ejecuto el comando dtrx sin usar ningún indicador.

[[email protected]]# dtrx tecmint27-12-2013.gz

Además de simplificar la extracción, tiene un montón de otras opciones, como extraer el archivo a una carpeta y extraer de forma recursiva todos los demás archivos dentro de un archivo determinado.

Considere que tiene un archivo "dtrAll.zip", que consta de dtr1.zip, dtr2.zip y dtr3.zip, cada uno de los cuales consta de dtr1, dtr2 y dtr3 respectivamente. En lugar de tener que extraer manualmente primero el zip dtrAll y luego extraer cada uno de los archivos dtr1, dtr2 y dtr3, puedes extraerlo directamente en las carpetas respectivas usando dtrx y seleccionando la opción "a", extrae todos los archivos zip de forma recursiva.

[[email protected]]# dtrx dtrAll.zip
dtrx: WARNING: extracting /root/dtrAll.zip to dtrAll.1
dtrAll.zip contains 3 other archive file(s), out of 3 file(s) total.
You can:
 * _A_lways extract included archives during this session
 * extract included archives this _O_nce
 * choose _N_ot to extract included archives this once
 * ne_V_er extract included archives during this session
 * _L_ist included archives
What do you want to do?  (a/o/N/v/l) a

Después de la extracción, el contenido del directorio extraído se puede verificar usando el comando ls.

[[email protected]]# cd dtrAll
[[email protected]]# ls 

dtr1  dtr1.zip  dtr2  dtr2.zip  dtr3  dtr3.zip

Supongamos que desea extraer el primer archivo y no los archivos que contiene. Al seleccionar N, solo extrae el archivo dado y no otros archivos dentro de él.

[[email protected]]# dtrx dtrAll.zip
dtrx: WARNING: extracting /root/dtrAll.zip to dtrAll.1
dtrAll.zip contains 3 other archive file(s), out of 3 file(s) total.
You can:
 * _A_lways extract included archives during this session
 * extract included archives this _O_nce
 * choose _N_ot to extract included archives this once
 * ne_V_er extract included archives during this session
 * _L_ist included archives
What do you want to do?  (a/o/N/v/l) N

El contenido del directorio extraído se puede verificar usando el comando ls como se muestra.

[[email protected]]# cd dtrAll
[[email protected]]# ls

dtr1.zip dtr2.zip dtr3.zip

Para extraer cada capa de archivo dentro del archivo caso por caso, es decir, si desea extraer la segunda capa de archivos pero no la tercera capa, puede usar la opción "o".

Considere que tiene un archivo zip "dtrNewAll.zip", que tiene "dtrAll.zip" y "dtrNew" como contenido. Ahora, si desea extraer el contenido de “dtrNewAll” y “dtrAll” también pero no de dtr1.zip, dtr2.zip y dtr3.zip, puede usar las opciones “o” y “n” como se muestra a continuación.

# dtrx dtrNewAll.zip
dtrNewAll.zip contains 1 other archive file(s), out of 2 file(s) total.
You can:
 * _A_lways extract included archives during this session
 * extract included archives this _O_nce
 * choose _N_ot to extract included archives this once
 * ne_V_er extract included archives during this session
 * _L_ist included archives
What do you want to do?  (a/o/N/v/l) o
dtrAll.zip contains 3 other archive file(s), out of 3 file(s) total.
You can:
 * _A_lways extract included archives during this session
 * extract included archives this _O_nce
 * choose _N_ot to extract included archives this once
 * ne_V_er extract included archives during this session
 * _L_ist included archives
What do you want to do?  (a/o/N/v/l) n

El contenido del directorio extraído se puede verificar usando el comando ls como se muestra.

[[email protected]]# cd dtrNewAll
[[email protected]]# ls

dtrAll  dtrAll.zip  dtrNew
[[email protected]]# cd dtrAll
[[email protected]]# ls

dtr1.zip dtr2.zip dtr3.zip

Primero seleccionamos la opción "o" que significa que todos los archivos dentro de dtrNewAll serán extraídos. Posteriormente seleccionamos la opción "n" para dtrAll.zip lo que significa que los archivos dentro de él dtr1.zip, dtr2.zip y dtr3.zip no serán extraídos.

La opción “-m” extrae los metadatos de archivos .deb, .rpm y .gem, en lugar de su contenido normal. A continuación se muestra un ejemplo del comando.

[[email protected]]# dtrx -m openfire_3.8.2_all.deb 
[[email protected]]# dtrx -m openfire-3.8.2-1.i386.rpm
[[email protected]]# ls

conffiles  control  md5sums  postinst  postrm  prerm

Hay muchas más opciones de dtrx para explorar, simplemente ejecute “dtrx –help” para listar las opciones disponibles.

[[email protected]]# dtrx  --help

Usage: dtrx [options] archive [archive2 ...]

Intelligent archive extractor

Options:
  --version             	show program's version number and exit
  -h, --help            	show this help message and exit
  -l, -t, --list, --table      	list contents of archives on standard output
  -m, --metadata        	extract metadata from a .deb/.gem
  -r, --recursive       	extract archives contained in the ones listed
  -n, --noninteractive  	don't ask how to handle special cases
  -o, --overwrite       	overwrite any existing target output
  -f, --flat, --no-directory    extract everything to the current directory
  -v, --verbose         	be verbose/print debugging information
  -q, --quiet           	suppress warning/error messages

Enlaces de referencia

Página de inicio de dtrx

Creo que debes probar dtrx, porque es la única herramienta de línea de comandos poderosa que ofrece un solo comando para descomprimir cualquier formato de archivos de almacenamiento. Eso es todo por ahora, y no olvide dejar su nota en la sección de comentarios.