Comandos Básicos de Linux 4
Bloques 11–12: Compresión y empaquetado · Información del sistema
📋 Contenido
11 Compresión y empaquetado
En Linux se distinguen dos operaciones que a menudo se combinan: empaquetar (reunir varios archivos en uno solo) y comprimir (reducir el tamaño de un archivo). La herramienta principal para empaquetar es tar, y para comprimir se usan gzip, bzip2 o xz. También existen zip y unzip para compatibilidad con Windows.
11.1 tar — Empaquetar y comprimir
El comando tar (Tape ARchive) agrupa varios archivos y directorios en un único archivo .tar. Combinado con opciones de compresión, genera los formatos .tar.gz, .tar.bz2 o .tar.xz, que son los más habituales en Linux.
Sintaxis: tar [opciones] archivo.tar [archivos/directorios]
Opciones esenciales
| Opción | Descripción |
|---|---|
| -c | Crea un nuevo archivo tar (create) |
| -x | Extrae el contenido de un archivo tar (extract) |
| -t | Lista el contenido sin extraer (list) |
| -v | Muestra los archivos procesados (verbose) |
| -f archivo | Especifica el nombre del archivo tar (siempre necesario) |
| -z | Comprime/descomprime con gzip (.tar.gz o .tgz) |
| -j | Comprime/descomprime con bzip2 (.tar.bz2) |
| -J | Comprime/descomprime con xz (.tar.xz) |
| -C directorio | Extrae en el directorio indicado |
| –exclude=pat | Excluye archivos que coincidan con el patrón |
Receta rápida — Los usos más habituales
$ tar -cvf copia.tar carpeta/
# CREAR comprimido con gzip (el más común)
$ tar -czvf copia.tar.gz carpeta/
# CREAR comprimido con bzip2 (mayor compresión, más lento)
$ tar -cjvf copia.tar.bz2 carpeta/
# CREAR comprimido con xz (mejor compresión)
$ tar -cJvf copia.tar.xz carpeta/
# LISTAR contenido sin extraer
$ tar -tvf copia.tar.gz
# EXTRAER en el directorio actual
$ tar -xzvf copia.tar.gz
# EXTRAER en un directorio concreto
$ tar -xzvf copia.tar.gz -C /home/alumno/destino/
# EXTRAER solo un archivo concreto del paquete
$ tar -xzvf copia.tar.gz carpeta/archivo.txt
# Excluir archivos al crear
$ tar -czvf copia.tar.gz carpeta/ –exclude=’*.log’
La f siempre debe ir justo antes del nombre del archivo.
Comparativa de formatos de compresión
| Formato | Descripción |
|---|---|
| .tar | Solo empaquetado, sin compresión. Rápido pero grande |
| .tar.gz | Buena compresión y velocidad. El formato más extendido en Linux |
| .tar.bz2 | Mejor compresión que gz, pero más lento. Menos usado hoy en día |
| .tar.xz | La mejor compresión de los tres, pero el más lento. Usado en paquetes de software |
| .zip | Compatible con Windows. Compresión media, muy portable |
11.2 gzip y gunzip — Comprimir archivos individuales
gzip comprime un único archivo y lo sustituye por su versión comprimida con extensión .gz. gunzip hace la operación inversa. A diferencia de tar, gzip no puede agrupar varios archivos.
Sintaxis: gzip [opciones] archivo / gunzip archivo.gz
| Opción | Descripción |
|---|---|
| -k | Conserva el archivo original (por defecto lo elimina) |
| -d | Descomprime (equivalente a gunzip) |
| -r | Comprime recursivamente todos los archivos de un directorio |
| -1 a -9 | Nivel de compresión: 1=rápido/menos compresión, 9=lento/más compresión |
| -l | Muestra información sobre un archivo .gz (tamaño, ratio…) |
$ gzip -k documento.txt → crea .gz conservando el original
$ gzip -9 video.mp4 → compresión máxima
$ gunzip documento.txt.gz → descomprime y restaura documento.txt
$ gzip -d documento.txt.gz → equivalente a gunzip
$ gzip -l *.gz → info de todos los .gz del directorio
# zcat permite ver el contenido sin descomprimir
$ zcat documento.txt.gz
cat, less y grep que trabajan directamente sobre archivos .gz sin necesidad de descomprimirlos primero.11.3 zip y unzip — Compatibilidad con Windows
Los comandos zip y unzip manejan el formato .zip, universal y compatible con Windows, macOS y Linux. Son la mejor opción cuando necesitas compartir archivos comprimidos con usuarios de otros sistemas operativos.
Sintaxis: zip [opciones] archivo.zip archivos… / unzip [opciones] archivo.zip
zip — Comprimir
| Opción | Descripción |
|---|---|
| -r | Incluye directorios de forma recursiva |
| -e | Cifra el zip con contraseña |
| -9 | Máxima compresión |
| -u | Actualiza archivos ya existentes en el zip |
| -d | Elimina un archivo del zip |
$ zip -r proyecto.zip carpeta/ → comprime una carpeta entera
$ zip -e privado.zip datos.txt → comprime con contraseña
$ zip -r -9 maximo.zip carpeta/ → máxima compresión recursiva
unzip — Descomprimir
| Opción | Descripción |
|---|---|
| -l | Lista el contenido sin extraer |
| -d directorio | Extrae en el directorio indicado |
| -o | Sobreescribe sin pedir confirmación |
| -q | Modo silencioso |
| -t | Comprueba la integridad del zip sin extraer |
$ unzip documentos.zip -d /tmp/ → extrae en /tmp/
$ unzip -l proyecto.zip → lista el contenido
$ unzip -t proyecto.zip → verifica la integridad
tar.gz. Usa zip cuando el destinatario use Windows o cuando necesites proteger con contraseña de forma sencilla.12 Información del sistema
Linux ofrece una gran variedad de comandos para conocer el estado del sistema: versión del kernel, espacio en disco, uso de memoria RAM, hardware instalado, etc. Son esenciales para el mantenimiento y la administración de cualquier equipo.
12.1 uname — Información del sistema operativo
El comando uname muestra información sobre el núcleo (kernel) y el sistema operativo en uso.
Sintaxis: uname [opciones]
| Opción | Descripción |
|---|---|
| -a | Muestra toda la información disponible (la opción más usada) |
| -r | Muestra solo la versión del kernel |
| -s | Muestra el nombre del sistema operativo (Linux) |
| -n | Muestra el nombre del equipo (hostname) |
| -m | Muestra la arquitectura del procesador (x86_64, arm64…) |
| -o | Muestra el sistema operativo (GNU/Linux) |
Linux miequipo 6.5.0-44-generic #44-Ubuntu SMP x86_64 GNU/Linux
$ uname -r
6.5.0-44-generic
$ uname -m
x86_64
uname -r es muy útil para saber qué versión del kernel está corriendo, especialmente cuando se instalan módulos o controladores que dependen de ella.12.2 df — Espacio en disco
El comando df (Disk Free) muestra el espacio disponible y ocupado en cada sistema de archivos montado. Es uno de los primeros comandos a ejecutar cuando sospechamos que el disco está lleno.
Sintaxis: df [opciones] [ruta]
| Opción | Descripción |
|---|---|
| -h | Muestra los tamaños en formato legible (KB, MB, GB) |
| -H | Como -h pero usando potencias de 1000 en lugar de 1024 |
| -T | Muestra el tipo de sistema de archivos (ext4, ntfs, tmpfs…) |
| -t tipo | Muestra solo los sistemas de archivos del tipo indicado |
| -x tipo | Excluye los sistemas de archivos del tipo indicado |
| –total | Muestra una línea con el total de todos los sistemas |
S.ficheros Tamaño Usado Disp Uso% Montado en
/dev/sda1 1,9T 320G 1,5T 18% /
tmpfs 3,8G 0B 3,8G 0% /dev/shm
$ df -h /home → solo el sistema de archivos de /home
$ df -hT → con tipo de sistema de archivos
$ df -h –total → con total al final
du y liberar espacio antes de que el sistema falle.12.3 du — Uso de espacio por archivos y directorios
Mientras df muestra el estado general de los discos, du (Disk Usage) analiza cuánto espacio ocupa cada archivo o directorio en concreto. Es la herramienta perfecta para localizar qué está consumiendo el espacio.
Sintaxis: du [opciones] [ruta]
| Opción | Descripción |
|---|---|
| -h | Muestra los tamaños en formato legible |
| -s | Muestra solo el total del directorio (sin desglosar) |
| -a | Muestra el tamaño de cada archivo, no solo directorios |
| –max-depth=N | Limita la profundidad del análisis a N niveles |
| -c | Muestra el total acumulado al final |
| –exclude=pat | Excluye archivos que coincidan con el patrón |
$ du -sh /* → tamaño de cada directorio raíz
$ du -h –max-depth=1 /var/ → solo un nivel de profundidad en /var
$ du -ah /home/alumno/ | sort -rh | head -10 → los 10 archivos más grandes
# Truco clásico: encontrar los directorios más pesados
$ du -sh /var/* | sort -rh | head -5
du -sh * | sort -rh | head -10 es el truco más usado para encontrar rápidamente qué ocupa más espacio en un directorio.12.4 free — Uso de memoria RAM
El comando free muestra la cantidad de memoria RAM y swap (memoria de intercambio) disponible y en uso en el sistema.
Sintaxis: free [opciones]
| Opción | Descripción |
|---|---|
| -h | Muestra los valores en formato legible (MB, GB) |
| -m | Muestra los valores en megabytes |
| -g | Muestra los valores en gigabytes |
| -s N | Actualiza la información cada N segundos |
| -t | Muestra una línea con el total (RAM + swap) |
total usado libre compartido buff/cache disponible
Memoria: 23Gi 3,2Gi 15Gi 312Mi 4,8Gi 19Gi
Swap: 2,0Gi 0B 2,0Gi
$ free -h -s 2 → actualiza cada 2 segundos
| Columna | Descripción |
|---|---|
| total | Memoria RAM total instalada en el sistema |
| usado | Memoria en uso por procesos y el kernel |
| libre | Memoria completamente libre y sin usar |
| buff/cache | Memoria usada como caché de disco (Linux la libera si hace falta) |
| disponible | Memoria realmente disponible para nuevos procesos (la más importante) |
| Swap | Memoria de intercambio en disco (se usa cuando la RAM se agota) |
12.5 Otros comandos útiles de información del sistema
Existen varios comandos adicionales muy prácticos para obtener información del hardware y del sistema:
| Comando | Descripción |
|---|---|
| lscpu | Información detallada del procesador (núcleos, velocidad, arquitectura) |
| lsblk | Lista los discos y particiones del sistema en formato árbol |
| lsusb | Lista los dispositivos USB conectados |
| lspci | Lista los dispositivos PCI (tarjeta gráfica, red, etc.) |
| lshw | Información completa del hardware (requiere sudo para detalles) |
| hostname | Muestra o cambia el nombre del equipo |
| uptime | Tiempo que lleva encendido el sistema y carga media |
| who / w | Usuarios conectados al sistema en este momento |
| last | Historial de inicios de sesión del sistema |
| dmesg | Mensajes del kernel (útil para diagnosticar hardware) |
| cat /etc/os-release | Información de la distribución Linux instalada |
$ lsblk → discos y particiones
$ lsblk -o NAME,SIZE,TYPE,MOUNTPOINT → con columnas personalizadas
$ uptime
10:32:14 up 3 days, 4:12, 2 users, load average: 0.45, 0.38, 0.31
$ cat /etc/os-release
NAME=»Linux Mint»
VERSION=»21.3 (Virginia)»
$ sudo lshw -short → resumen del hardware
$ dmesg | grep -i error → errores del kernel
$ dmesg | tail -20 → últimos mensajes del kernel
lsblk es el comando más práctico para ver de un vistazo todos los discos, particiones y puntos de montaje del sistema, especialmente útil en servidores con varios discos.📋 Resumen general de comandos
Tabla rápida de referencia con todos los comandos vistos en estos apuntes, agrupados por bloque temático.
| Comando | Descripción |
|---|---|
| 🗂️ Navegación | |
| pwd | Muestra el directorio actual |
| ls | Lista el contenido de un directorio |
| cd | Cambia de directorio |
| 📁 Gestión de archivos | |
| mkdir | Crea directorios |
| touch | Crea archivos vacíos |
| cp | Copia archivos y directorios |
| mv | Mueve o renombra |
| rm | Elimina archivos y directorios |
| 👁️ Visualización | |
| cat | Muestra el contenido completo |
| less / more | Pagina el contenido |
| head | Muestra el inicio del archivo |
| tail | Muestra el final / seguimiento en tiempo real |
| 🔍 Búsqueda | |
| find | Busca archivos por nombre, tipo, tamaño, fecha… |
| grep | Busca texto dentro de archivos |
| 🔒 Permisos | |
| chmod | Cambia los permisos de archivos y directorios |
| chown | Cambia el propietario y/o grupo |
| 👤 Usuarios y grupos | |
| whoami / id | Muestra el usuario actual y sus grupos |
| su / sudo | Cambia de usuario o eleva privilegios |
| adduser / useradd | Crea nuevos usuarios |
| passwd | Cambia contraseñas |
| groupadd / usermod | Gestiona grupos |
| ⚙️ Procesos | |
| ps | Instantánea de procesos |
| top / htop | Monitor en tiempo real |
| kill / killall | Termina procesos |
| jobs / fg / bg | Gestiona procesos en segundo plano |
| 🌐 Red | |
| ping | Comprueba conectividad |
| ip a / ifconfig | Muestra la configuración de red |
| curl | Transfiere datos y consume APIs |
| wget | Descarga archivos de internet |
| ↔️ Redirecciones y tuberías | |
| > | Redirige la salida (sobreescribe) |
| >> | Redirige la salida (añade) |
| < | Redirige la entrada desde archivo |
| | | Tubería: encadena comandos |
| && || ; | Operadores de control de flujo |
| 🗜️ Compresión | |
| tar | Empaqueta y comprime (.tar.gz, .tar.bz2, .tar.xz) |
| gzip / gunzip | Comprime/descomprime archivos .gz |
| zip / unzip | Formato .zip compatible con Windows |
| 🖥️ Información del sistema | |
| uname | Información del kernel y SO |
| df | Espacio en disco |
| du | Uso de espacio por directorio o archivo |
| free | Uso de memoria RAM y swap |
| lscpu / lsblk / lspci | Información de hardware |
La mejor forma de aprender Linux es usarlo.
man comando — la documentación oficial siempre está a un comando de distancia.
