tar
El comando tar (del inglés tape archive) es la utilidad estándar en Linux y sistemas Unix para empaquetar múltiples archivos y directorios en un único fichero contenedor (conocido como archivo tarball). Además, al combinarse con algoritmos de compresión como Gzip o Bzip2, permite reducir drásticamente el tamaño del archivo resultante para su almacenamiento o transferencia.
| Categoría | Almacenamiento y compresión |
|---|---|
| Disponible en | Linux / macOS / Sistemas Unix-like |
| Equivalente en Windows | Herramientas gráficas como WinRAR, 7-Zip, o comandos nativos recientes de PowerShell (Compress-Archive) |
| Sustituye a | Antiguos métodos de volcado en cinta magnética. Coexiste con utilidades modernas de compresión como zip, gzip o rar. |
| ¿Requiere permisos de administrador? | No de forma general, salvo que intentes empaquetar/extraer archivos o directorios del sistema operativo que requieran privilegios de superusuario (sudo). |
¿Qué significa su nombre?
TAR proviene de las siglas en inglés de Tape Archiver (Archivador en Cinta). Históricamente, este comando fue diseñado para realizar copias de seguridad volcando colecciones de ficheros directamente en cintas magnéticas físicas.
Aunque las cintas magnéticas ya no se usan en entornos domésticos, el nombre y la utilidad principal del comando se han mantenido intactos, siendo hoy el estándar absoluto para agrupar estructuras de ficheros en Linux.
¿Para qué sirve?
El comando tar sirve principalmente para dos funciones complementarias: compactar (agrupar muchos archivos o carpetas en un solo fichero sin modificar su peso) y comprimir (reducir el tamaño de ese archivo aplicando algoritmos matemáticos). También es la herramienta indispensable para realizar el proceso inverso (desempaquetar y descomprimir).
A diferencia de otras utilidades de compresión, tar respeta íntegramente los permisos de los archivos, los propietarios, los enlaces simbólicos y la estructura de directorios original, lo que lo convierte en el formato predilecto para backups y despliegues de software.
Sintaxis
tar [opciones] [nombre_archivo_destino] [archivos_origen]
Las opciones o flags más habituales son:
| Opción (Flag) | Descripción |
|---|---|
-c (create) |
Crea un nuevo archivo de almacenamiento (tarball). |
-x (extract) |
Extrae o desempaqueta el contenido de un archivo tarball. |
-f (file) |
Indica el nombre del archivo con el que se va a operar (debe ser el último flag). |
-z (gzip) |
Comprime o descomprime el archivo utilizando el filtro Gzip (formato .tar.gz o .tgz). |
-v (verbose) |
Muestra por pantalla en tiempo real los archivos que se van procesando (modo detallado). |
Comandos más utilizados
| Comando | Descripción |
|---|---|
tar -cf archivo.tar carpeta/ |
Compacta una carpeta en un único fichero .tar sin compresión. |
tar -czf archivo.tar.gz carpeta/ |
Compacta y comprime una carpeta en formato .tar.gz usando Gzip. |
tar -xf archivo.tar |
Extrae el contenido de un archivo .tar en el directorio actual. |
tar -xzf archivo.tar.gz |
Extrae y descomprime un archivo .tar.gz en el directorio actual. |
Equivalencia con otros sistemas
| Acción | Linux (tar) | Windows (PowerShell) | Windows (Gráfico) |
|---|---|---|---|
| Crear archivo comprimido | tar -czf backup.tar.gz carpeta/ |
Compress-Archive -Path carpeta -DestinationPath backup.zip |
Clic derecho -> Enviar a carpeta comprimida (ZIP) |
| Descomprimir archivo | tar -xzf backup.tar.gz |
Expand-Archive -Path backup.zip -DestinationPath . |
Clic derecho -> Extraer todo... |
| Listar contenido sin extraer | tar -tf backup.tar |
Inspección mediante explorador o 7-Zip | Abrir con 7-Zip / WinRAR |
Ejemplos
Crear un archivo tarball sin compresión (.tar) a partir de un directorio
tar -cf proyecto.tar mi_carpeta/
Crear un archivo comprimido utilizando Gzip (.tar.gz) con modo detallado
tar -czvf backup_web.tar.gz /var/www/html/
Extraer un archivo comprimido en el directorio actual
tar -xzf backup_web.tar.gz
Listar el contenido de un archivo comprimido sin descomprimirlo
tar -tf backup_web.tar.gz
Ejemplo de salida
mi_carpeta/
mi_carpeta/index.html
mi_carpeta/css/
mi_carpeta/css/style.css
mi_carpeta/js/
mi_carpeta/js/main.js
¿Cómo interpretar la salida?
- Listado detallado (flag -v): muestra secuencialmente la ruta relativa de cada uno de los archivos y carpetas que van siendo empaquetados o extraídos uno a uno en la terminal.
- Ausencia de errores: si el comando finaliza sin devolver ningún mensaje en la consola, significa que la operación de empaquetado o extracción se ha completado de forma totalmente íntegra.
Errores habituales
- Olvidar añadir la opción
-fo colocarla en un lugar incorrecto (recuerda que el flag-fdebe ir siempre seguido inmediatamente del nombre del archivo de destino/origen). - Confundir los parámetros de creación (
-c) y extracción (-x), lo que puede provocar que sobrescribas un archivo existente por error con un archivo vacío.
Conceptos relacionados
- Archivo tarball
- Compresión de datos
- Algoritmo Gzip
- Permisos de archivos en Unix
- Copias de seguridad (Backups)
Comandos relacionados
gzipgunzipzipunzipdu
Curiosidades
Aunque hoy en día asociamos tar directamente a la compresión con Gzip mediante el parámetro -z, originalmente el comando no realizaba ninguna compresión matemática; su única misión era la de "coser" miles de archivos independientes en un flujo continuo de datos apto para ser grabado en una cinta física lineal.
Prácticas propuestas
- Crea una carpeta de pruebas con varios archivos de texto en su interior y utiliza el comando
tar -cfpara generar un archivo.tarestándar. - Compara el tamaño en disco del archivo
.targenerado frente al resultado de aplicar compresión contar -czfutilizando el comandols -lh. - Borra la carpeta de pruebas original de forma controlada y comprueba que eres capaz de recuperar todos los datos intactos ejecutando la orden de extracción
tar -xzf. - Utiliza el parámetro
-tfen tu archivo comprimido para listar su contenido interno sin necesidad de descomprimirlo en el disco duro. - Comprueba qué ocurre si intentas extraer un archivo tarball especificando una ruta de destino alternativa mediante el parámetro
-C. - Si dispones de un entorno mixto, compara el comportamiento de compresión de archivos
.tar.gzen Linux con los tradicionales archivos.zipen Windows.
Consejo: Acostúmbrate a utilizar la combinación mnemotécnica zxvf para extraer (Extract, Gzip, Verbose, File) y czvf para comprimir (Create, Zipped, Verbose, File); te ayudará a recordar los modificadores esenciales de memoria sin dudar.
Haz clic aquí para ver las soluciones y explicaciones
1. ¿Qué diferencia técnica existe entre "compactar" un archivo con tar y "comprimirlo" con gzip?
Compactar (crear un archivo .tar) consiste meramente en empaquetar múltiples ficheros y carpetas dentro de un único contenedor lineal, manteniendo el peso total intacto. Comprimir (mediante Gzip o el flag -z) aplica un algoritmo matemático sobre ese contenedor para buscar patrones repetitivos y reducir significativamente el espacio físico que ocupa en el disco.
En resumen, tar une los archivos en uno solo, y gzip encoge ese archivo resultante.
2. ¿Por qué el tamaño del archivo comprimido .tar.gz suele ser menor que el de la suma de los archivos originales?
Porque el algoritmo de compresión Gzip analiza el flujo de datos buscando redundancias y patrones de caracteres repetidos, reemplazándolos por referencias más cortas. Además, al empaquetarlo todo en un único bloque continuo, la eficiencia de compresión global de la estructura de ficheros mejora notablemente frente a comprimir cada archivo de forma independiente.
3. ¿Por qué es obligatorio que el modificador -f sea siempre el último de la cadena de opciones en tar?
Porque el flag -f (file) le indica explícitamente al comando que el siguiente argumento inmediato en la línea de comandos debe ser interpretado obligatoriamente como el nombre del archivo de destino u origen. Si colocaras otro modificador después de -f, el sistema interpretaría erróneamente ese parámetro como el nombre del archivo.
4. ¿Qué utilidad práctica aporta el uso de la opción -t frente a la extracción directa de un archivo comprimido?
La opción -t (list) permite inspeccionar de forma rápida y segura el índice de archivos y rutas que contiene un paquete comprimido sin necesidad de descomprimirlo físicamente en el disco duro. Esto es sumamente útil cuando descargas un backup grande y solo necesitas verificar si un archivo específico se encuentra dentro antes de realizar una extracción masiva.
5. ¿Qué función cumple el parámetro -C al ejecutar operaciones con tar en el terminal?
El parámetro -C permite cambiar de directorio de trabajo "al vuelo" durante la ejecución del comando. Se utiliza habitualmente para indicar una ruta de destino específica en la que queremos que se descomprima el contenido del archivo, evitando tener que movernos manualmente con cd a esa carpeta antes de realizar la extracción.
6. ¿Por qué los desarrolladores de sistemas prefieren utilizar habitualmente tar en lugar de formatos comerciales como .rar o .zip en Linux?
Porque tar viene instalado por defecto en prácticamente cualquier distribución Unix/Linux, maneja nativamente la estructura compleja de permisos de usuarios, propietarios y enlaces simbólicos sin corromperlos, y está optimizado para procesar grandes flujos de datos y directorios masivos de forma altamente eficiente en entornos de servidor.