Guía de Comandos de Linux 4: Compresión y Sistema

Guía de Comandos de Linux 4: Compresión y Sistema- Linux, Tutoriales

🐧 Linux ·

Comandos Básicos de Linux 4

Bloques 11–12: Compresión y empaquetado · Información del sistema

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ónDescripción
-cCrea un nuevo archivo tar (create)
-xExtrae el contenido de un archivo tar (extract)
-tLista el contenido sin extraer (list)
-vMuestra los archivos procesados (verbose)
-f archivoEspecifica el nombre del archivo tar (siempre necesario)
-zComprime/descomprime con gzip (.tar.gz o .tgz)
-jComprime/descomprime con bzip2 (.tar.bz2)
-JComprime/descomprime con xz (.tar.xz)
-C directorioExtrae en el directorio indicado
–exclude=patExcluye archivos que coincidan con el patrón

Receta rápida — Los usos más habituales

# CREAR un archivo tar sin compresión
$ 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’
💡
Truco para recordar las opciones c=Crear · x=eXtraer · t=listar · v=Verbose · f=Fichero · z=gZip
La f siempre debe ir justo antes del nombre del archivo.

Comparativa de formatos de compresión

FormatoDescripción
.tarSolo empaquetado, sin compresión. Rápido pero grande
.tar.gzBuena compresión y velocidad. El formato más extendido en Linux
.tar.bz2Mejor compresión que gz, pero más lento. Menos usado hoy en día
.tar.xzLa mejor compresión de los tres, pero el más lento. Usado en paquetes de software
.zipCompatible 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ónDescripción
-kConserva el archivo original (por defecto lo elimina)
-dDescomprime (equivalente a gunzip)
-rComprime recursivamente todos los archivos de un directorio
-1 a -9Nivel de compresión: 1=rápido/menos compresión, 9=lento/más compresión
-lMuestra información sobre un archivo .gz (tamaño, ratio…)
$ gzip documento.txt → crea documento.txt.gz y borra el original
$ 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
💡
zcat, zless y zgrep Son versiones de 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ónDescripción
-rIncluye directorios de forma recursiva
-eCifra el zip con contraseña
-9Máxima compresión
-uActualiza archivos ya existentes en el zip
-dElimina un archivo del zip
$ zip documentos.zip *.txt → comprime todos los .txt
$ 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ónDescripción
-lLista el contenido sin extraer
-d directorioExtrae en el directorio indicado
-oSobreescribe sin pedir confirmación
-qModo silencioso
-tComprueba la integridad del zip sin extraer
$ unzip documentos.zip → extrae en el directorio actual
$ unzip documentos.zip -d /tmp/ → extrae en /tmp/
$ unzip -l proyecto.zip → lista el contenido
$ unzip -t proyecto.zip → verifica la integridad
💡
¿tar.gz o zip? Para comprimir varios archivos en Linux lo más común es usar 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ónDescripción
-aMuestra toda la información disponible (la opción más usada)
-rMuestra solo la versión del kernel
-sMuestra el nombre del sistema operativo (Linux)
-nMuestra el nombre del equipo (hostname)
-mMuestra la arquitectura del procesador (x86_64, arm64…)
-oMuestra el sistema operativo (GNU/Linux)
$ uname -a
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
💡
Recuerda 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ónDescripción
-hMuestra los tamaños en formato legible (KB, MB, GB)
-HComo -h pero usando potencias de 1000 en lugar de 1024
-TMuestra el tipo de sistema de archivos (ext4, ntfs, tmpfs…)
-t tipoMuestra solo los sistemas de archivos del tipo indicado
-x tipoExcluye los sistemas de archivos del tipo indicado
–totalMuestra una línea con el total de todos los sistemas
$ df -h
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
💡
Disco casi lleno Si el uso de algún disco supera el 90%, es momento de investigar qué ocupa tanto espacio con 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ónDescripción
-hMuestra los tamaños en formato legible
-sMuestra solo el total del directorio (sin desglosar)
-aMuestra el tamaño de cada archivo, no solo directorios
–max-depth=NLimita la profundidad del análisis a N niveles
-cMuestra el total acumulado al final
–exclude=patExcluye archivos que coincidan con el patrón
$ du -sh /home/alumno/ → tamaño total del directorio personal
$ 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
💡
Truco más usado La combinación 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ónDescripción
-hMuestra los valores en formato legible (MB, GB)
-mMuestra los valores en megabytes
-gMuestra los valores en gigabytes
-s NActualiza la información cada N segundos
-tMuestra una línea con el total (RAM + swap)
$ free -h
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
ColumnaDescripción
totalMemoria RAM total instalada en el sistema
usadoMemoria en uso por procesos y el kernel
libreMemoria completamente libre y sin usar
buff/cacheMemoria usada como caché de disco (Linux la libera si hace falta)
disponibleMemoria realmente disponible para nuevos procesos (la más importante)
SwapMemoria de intercambio en disco (se usa cuando la RAM se agota)
💡
La columna que importa En Linux, la columna disponible es la que realmente importa, no libre. Linux usa la RAM libre como caché de disco para acelerar el sistema, lo cual es normal y deseable.
⚠️
Swap elevado = problema Si el uso de Swap es elevado y sostenido, el sistema está bajo presión de memoria y puede ir lento. Considera cerrar aplicaciones o ampliar la RAM.

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:

ComandoDescripción
lscpuInformación detallada del procesador (núcleos, velocidad, arquitectura)
lsblkLista los discos y particiones del sistema en formato árbol
lsusbLista los dispositivos USB conectados
lspciLista los dispositivos PCI (tarjeta gráfica, red, etc.)
lshwInformación completa del hardware (requiere sudo para detalles)
hostnameMuestra o cambia el nombre del equipo
uptimeTiempo que lleva encendido el sistema y carga media
who / wUsuarios conectados al sistema en este momento
lastHistorial de inicios de sesión del sistema
dmesgMensajes del kernel (útil para diagnosticar hardware)
cat /etc/os-releaseInformación de la distribución Linux instalada
$ lscpu | grep ‘Nombre del modelo’ → modelo del procesador
$ 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: imprescindible en servidores 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.

ComandoDescripción
🗂️ Navegación
pwdMuestra el directorio actual
lsLista el contenido de un directorio
cdCambia de directorio
📁 Gestión de archivos
mkdirCrea directorios
touchCrea archivos vacíos
cpCopia archivos y directorios
mvMueve o renombra
rmElimina archivos y directorios
👁️ Visualización
catMuestra el contenido completo
less / morePagina el contenido
headMuestra el inicio del archivo
tailMuestra el final / seguimiento en tiempo real
🔍 Búsqueda
findBusca archivos por nombre, tipo, tamaño, fecha…
grepBusca texto dentro de archivos
🔒 Permisos
chmodCambia los permisos de archivos y directorios
chownCambia el propietario y/o grupo
👤 Usuarios y grupos
whoami / idMuestra el usuario actual y sus grupos
su / sudoCambia de usuario o eleva privilegios
adduser / useraddCrea nuevos usuarios
passwdCambia contraseñas
groupadd / usermodGestiona grupos
⚙️ Procesos
psInstantánea de procesos
top / htopMonitor en tiempo real
kill / killallTermina procesos
jobs / fg / bgGestiona procesos en segundo plano
🌐 Red
pingComprueba conectividad
ip a / ifconfigMuestra la configuración de red
curlTransfiere datos y consume APIs
wgetDescarga 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
tarEmpaqueta y comprime (.tar.gz, .tar.bz2, .tar.xz)
gzip / gunzipComprime/descomprime archivos .gz
zip / unzipFormato .zip compatible con Windows
🖥️ Información del sistema
unameInformación del kernel y SO
dfEspacio en disco
duUso de espacio por directorio o archivo
freeUso de memoria RAM y swap
lscpu / lsblk / lspciInformación de hardware
🐧 ¡Sigue practicando!

La mejor forma de aprender Linux es usarlo.

man comando — la documentación oficial siempre está a un comando de distancia.

Deja un comentario