Introducción
En este laboratorio, obtendrás experiencia práctica en la gestión y transferencia de archivos de forma eficiente y segura en un sistema RHEL. Aprenderás a crear, listar y extraer archivos de archivos tar, incluyendo archivos comprimidos, esenciales para el empaquetado y respaldo de datos.
Además, este laboratorio te guiará a través de la transferencia segura de archivos utilizando sftp para transferencias interactivas de archivos y rsync para una sincronización de archivos robusta y eficiente, asegurando la integridad y seguridad de los datos durante las operaciones de red.
Crear y Listar Archivos de Archivo tar
En este paso, aprenderás a crear y listar archivos tar. La utilidad tar es una herramienta de línea de comandos potente utilizada para archivar archivos y directorios. Se usa comúnmente para copias de seguridad y transferencia de archivos.
El comando tar requiere una opción de acción para especificar la operación que debe realizar. Las opciones de acción comunes incluyen:
-co--create: Crea un nuevo archivo de archivo.-to--list: Lista el contenido de un archivo de archivo.-xo--extract: Extrae archivos de un archivo de archivo.
Además, tar a menudo utiliza opciones generales para modificar su comportamiento:
-vo--verbose: Muestra los archivos que se están procesando durante el archivado o la extracción.-fo--file: Especifica el nombre del archivo de archivo. Esta opción debe ir seguida del nombre del archivo de archivo.
Comencemos creando algunos archivos de muestra que archivaremos. Navega a tu directorio ~/project, que es tu directorio de trabajo predeterminado.
cd ~/project
Ahora, crea un nuevo directorio llamado my_files y algunos archivos de texto de muestra dentro de él.
mkdir my_files
echo "Este es el contenido del archivo1." > my_files/file1.txt
echo "Este es el contenido del archivo2." > my_files/file2.txt
echo "Este es el contenido del archivo3." > my_files/file3.txt
ls my_files
Debes ver los tres archivos listados:
file1.txt file2.txt file3.txt
Ahora, creemos un archivo tar del directorio my_files. Llamaremos al archivo my_archive.tar.
tar -cvf my_archive.tar my_files
La salida mostrará los archivos que se están agregando al archivo:
my_files/
my_files/file1.txt
my_files/file2.txt
my_files/file3.txt
Puedes verificar que el archivo de archivo my_archive.tar se ha creado en tu directorio actual:
ls
Debes ver my_archive.tar listado junto con my_files:
my_archive.tar my_files
A continuación, listemos el contenido del archivo my_archive.tar usando las opciones -t (listar) y -f (archivo).
tar -tf my_archive.tar
La salida mostrará el contenido del archivo:
my_files/
my_files/file1.txt
my_files/file2.txt
my_files/file3.txt
Si deseas ver información más detallada, como permisos de archivo, propietario y tamaño, puedes agregar la opción -v (verbose):
tar -tvf my_archive.tar
La salida será similar a esta, proporcionando más detalles sobre cada elemento archivado:
drwxr-xr-x labex/labex 0 2023-10-27 10:00 my_files/
-rw-r--r-- labex/labex 22 2023-10-27 10:00 my_files/file1.txt
-rw-r--r-- labex/labex 22 2023-10-27 10:00 my_files/file2.txt
-rw-r--r-- labex/labex 22 2023-10-27 10:00 my_files/file3.txt
Observa que tar, de forma predeterminada, elimina el prefijo / de las rutas absolutas al archivar. Esta es una medida de seguridad para evitar la sobrescritura accidental de archivos del sistema al extraer archivos. Por ejemplo, si archivaras /etc/hosts, se almacenaría como etc/hosts dentro del archivo tar. Esto te permite extraerlo a una nueva ubicación sin afectar el archivo original /etc/hosts.
Extraer Archivos de Archivos tar
En este paso, aprenderás a extraer archivos de un archivo tar. Extraer archivos es el proceso de tomar el contenido archivado y colocarlo de nuevo en el sistema de archivos.
La opción principal para extraer archivos es -x o --extract. También usarás generalmente -f para especificar el archivo de archivo y -v para una salida detallada para ver qué archivos se están extrayendo.
Antes de extraer, es una buena práctica extraer archivos a un directorio vacío para evitar sobrescribir archivos existentes o mezclarlos con otro contenido. Creemos un nuevo directorio llamado extracted_files en tu directorio ~/project.
cd ~/project
mkdir extracted_files
Ahora, navega al directorio extracted_files. Esto asegura que el contenido del archivo se extraerá aquí.
cd extracted_files
Ahora, extraigamos el contenido de my_archive.tar (que se encuentra en el directorio padre, ~/project) en el directorio extracted_files actual.
tar -xvf ../my_archive.tar
La salida mostrará los archivos que se están extrayendo:
my_files/
my_files/file1.txt
my_files/file2.txt
my_files/file3.txt
Después de la extracción, puedes listar el contenido del directorio actual (~/project/extracted_files) para verificar que el directorio my_files y su contenido se hayan extraído correctamente.
ls
Debes ver el directorio my_files:
my_files
Ahora, revisemos el contenido del directorio my_files dentro de extracted_files:
ls my_files
Debes ver los archivos originales:
file1.txt file2.txt file3.txt
También puedes ver el contenido de uno de los archivos extraídos para confirmar su integridad:
cat my_files/file1.txt
La salida debería ser:
This is file1 content.
Al extraer archivos, el comando tar utiliza el umask actual para establecer los permisos de los archivos extraídos. Sin embargo, si deseas preservar los permisos de archivo originales tal como estaban en el archivo, puedes usar la opción -p o --preserve-permissions. Esto es particularmente útil al trabajar con scripts ejecutables o archivos de configuración donde los permisos específicos son cruciales. Para el usuario root, esta opción suele estar habilitada de forma predeterminada. Para usuarios regulares, es buena práctica incluirla si la preservación de permisos es importante.
Para este laboratorio, no demostraremos explícitamente la opción -p, ya que el comportamiento predeterminado es suficiente para nuestros archivos de texto. Sin embargo, ten en cuenta esta opción para futuros casos de uso.
Crear Archivos de Archivo tar comprimidos
En este paso, aprenderás a crear archivos tar comprimidos. Si bien tar solo agrupa archivos, puede integrarse con utilidades de compresión como gzip, bzip2 y xz para crear archivos de archivo más pequeños. Esto es crucial para ahorrar espacio en el disco y reducir los tiempos de transferencia.
El comando tar proporciona opciones específicas para diferentes algoritmos de compresión:
-zo--gzip: Utiliza la compresióngzip, resultando en un sufijo.tar.gzo.tgz. Este es el método de compresión más común y rápido.-jo--bzip2: Utiliza la compresiónbzip2, resultando en un sufijo.tar.bz2o.tbz. Generalmente ofrece una mejor compresión quegzippero es más lento.-Jo--xz: Utiliza la compresiónxz, resultando en un sufijo.tar.xzo.txz. Ofrece la mejor relación de compresión entre los tres pero es el más lento.-ao--auto-compress: Permite atardeterminar automáticamente el algoritmo de compresión basado en el sufijo del archivo (por ejemplo,.tar.gzimplicagzip). Esta es una opción conveniente.
Comencemos asegurándonos de estar en tu directorio ~/project.
cd ~/project
Primero, crearemos un archivo comprimido gzip del directorio my_files. Lo llamaremos my_archive.tar.gz.
tar -czvf my_archive.tar.gz my_files
La salida mostrará los archivos que se están agregando y comprimiendo:
my_files/
my_files/file1.txt
my_files/file2.txt
my_files/file3.txt
Puedes verificar la creación del archivo de archivo comprimido:
ls -lh my_archive.tar.gz
Las opciones -lh para ls proporcionan un tamaño legible por humanos. Verás una salida similar a esta, mostrando el tamaño del archivo:
-rw-r--r-- 1 labex labex 180 Oct 27 10:00 my_archive.tar.gz
(Nota: El tamaño exacto puede variar ligeramente según el sistema y el contenido, pero será un tamaño pequeño para estos archivos de texto pequeños).
Ahora, intentemos crear un archivo comprimido xz, que generalmente ofrece una mejor compresión. Lo llamaremos my_archive.tar.xz.
tar -cJvf my_archive.tar.xz my_files
Nuevamente, la salida mostrará los archivos que se están procesando:
my_files/
my_files/file1.txt
my_files/file2.txt
my_files/file3.txt
Revisa el tamaño del archivo xz:
ls -lh my_archive.tar.xz
Puedes notar que my_archive.tar.xz es ligeramente más pequeño que my_archive.tar.gz, lo que demuestra la mejor relación de compresión de xz.
-rw-r--r-- 1 labex labex 168 Oct 27 10:00 my_archive.tar.xz
Para extraer un archivo tar comprimido, tar es lo suficientemente inteligente como para detectar a menudo el tipo de compresión automáticamente al usar la opción -x. Sin embargo, es buena práctica usar explícitamente la opción de descompresión correspondiente (-z, -j o -J) o la opción -a (compresión automática).
Intentemos extraer my_archive.tar.gz en un nuevo directorio llamado extracted_gz.
mkdir extracted_gz
tar -xzvf my_archive.tar.gz -C extracted_gz
La opción -C (cambiar de directorio) le indica a tar que extraiga los archivos en el directorio especificado. Esta es una opción muy útil para evitar desordenar tu directorio actual.
Verifica el contenido de extracted_gz:
ls extracted_gz/my_files
Debes ver:
file1.txt file2.txt file3.txt
Transferir Archivos de Forma Segura con sftp
En este paso, aprenderás a transferir archivos de forma segura entre sistemas utilizando sftp (Secure File Transfer Program). sftp es un programa interactivo de transferencia de archivos que utiliza SSH (Secure Shell) para una comunicación segura, proporcionando cifrado y autenticación. Forma parte del conjunto OpenSSH.
Para este laboratorio, simularemos un sistema remoto utilizando el usuario labex en el mismo host como un usuario "remoto". Esto nos permite practicar los comandos sftp sin necesidad de una máquina virtual separada.
Primero, asegúrate de estar en tu directorio ~/project.
cd ~/project
Creemos un archivo que "subiremos" al directorio de inicio del usuario remoto simulado.
echo "Este archivo se cargará a través de sftp." > local_file.txt
Ahora, inicia una sesión sftp para el usuario labex en localhost.
sftp labex@localhost
Se te pedirá la contraseña para labex@localhost. Introduce labex.
La autenticidad del host 'localhost (127.0.0.1)' no se puede establecer.
Huella digital de la clave ED25519 es SHA256:....
¿Estás seguro de que quieres continuar la conexión (sí/no/[huella digital])? sí
Advertencia: 'localhost' (ED25519) se añadió permanentemente a la lista de hosts conocidos.
Contraseña de 'labex@localhost': labex
Conectado a localhost.
sftp>
Ahora estás en el indicador interactivo sftp.
Dentro del indicador sftp, puedes usar varios comandos similares a un shell normal.
pwd: Muestra el directorio de trabajo actual en el sistema remoto.lpwd: Muestra el directorio de trabajo actual en tu sistema local.ls: Lista los archivos en el sistema remoto.lls: Lista los archivos en el sistema local.
Probemos:
sftp> pwd
Directorio de trabajo remoto: /home/labex
sftp> lpwd
Directorio de trabajo local: /home/labex/project
sftp> ls
(El comando ls mostrará el contenido de /home/labex en el lado remoto, que es tu propio directorio de inicio).
Ahora, "subamos" local_file.txt desde tu directorio local ~/project al directorio de inicio del usuario remoto labex (/home/labex). Usa el comando put.
sftp> put local_file.txt
Subiendo local_file.txt a /home/labex/local_file.txt
local_file.txt 100% 32 0.0KB/s 00:00
sftp>
Puedes verificar que el archivo se subió listando el directorio remoto:
sftp> ls
Debes ver local_file.txt listado entre los archivos en /home/labex.
A continuación, "descarguemos" un archivo del sistema remoto. Descargaremos el archivo .bashrc del directorio de inicio del usuario remoto labex a tu directorio local ~/project. Usa el comando get.
sftp> get .bashrc
Descargando /home/labex/.bashrc a .bashrc
/home/labex/.bashrc 100% 193 0.2KB/s 00:00
sftp>
Puedes verificar la descarga listando tu directorio local:
sftp> lls
Debes ver .bashrc listado en tu directorio local ~/project.
Para salir de la sesión sftp, usa el comando exit o bye.
sftp> exit
Volverás a tu indicador de shell normal.
Sincronizar Archivos de Forma Segura con rsync
En este paso, aprenderás a sincronizar archivos entre sistemas utilizando el comando rsync. rsync es una herramienta potente y versátil para copiar y sincronizar archivos y directorios, tanto local como remotamente. Su principal ventaja es la capacidad de transferir solo las diferencias entre archivos, lo que la hace altamente eficiente para actualizaciones. Al igual que sftp, rsync puede utilizar SSH para transferencias seguras y cifradas.
Las opciones más comunes para rsync incluyen:
-ao--archive: Esta es una combinación de varias opciones (-rlptgoD) que preserva la mayoría de los atributos de los archivos (recursivo, enlaces, permisos, fechas, grupo, propietario, archivos de dispositivo). A menudo se la conoce como "modo de archivo" y se recomienda encarecidamente para la mayoría de las tareas de sincronización.-vo--verbose: Aumenta la verbosidad, mostrando más detalles sobre la transferencia.-zo--compress: Comprime los datos del archivo durante la transferencia, lo que puede acelerar las transferencias a través de enlaces lentos.-ho--human-readable: Muestra los números en un formato legible por humanos.-no--dry-run: Realiza una prueba de funcionamiento sin realizar ningún cambio. Esto es extremadamente útil para verificar qué harársyncantes de ejecutar realmente el comando.
Comencemos asegurándonos de estar en tu directorio ~/project.
cd ~/project
Simularemos un escenario de sincronización creando un directorio de origen y un directorio de destino.
Crea un directorio de origen source_dir con algunos archivos:
mkdir source_dir
echo "Contenido del archivoA" > source_dir/fileA.txt
echo "Contenido del archivoB" > source_dir/fileB.txt
mkdir source_dir/subdir
echo "Contenido del archivo subfile1" > source_dir/subdir/subfile1.txt
Crea un directorio de destino vacío dest_dir:
mkdir dest_dir
Ahora, realicemos una prueba de funcionamiento para ver qué haría rsync al sincronizar source_dir con dest_dir. Usaremos las opciones -avh para el modo de archivo, salida detallada y tamaños legibles por humanos, junto con -n para la prueba de funcionamiento.
rsync -avhn source_dir/ dest_dir/
Nota importante sobre las barras inclinadas finales:
source_dir/: La barra inclinada final significa "copiar el contenido desource_dir".source_dir: Sin barra inclinada final significa "copiarsource_diren sí mismo al destino".
La salida de la prueba de funcionamiento te mostrará los archivos que se transferirían:
enviando lista de archivos incremental
./
fileA.txt
fileB.txt
subdir/
subdir/subfile1.txt
enviados 186 bytes recibidos 12 bytes 396.00 bytes/seg
tamaño total es 66 aceleración es 0.33 (PRUEBA DE FUNCIONAMIENTO)
Observa (PRUEBA DE FUNCIONAMIENTO) al final, indicando que no se realizaron cambios reales.
Ahora, realicemos la sincronización real. Elimina la opción -n.
rsync -avh source_dir/ dest_dir/
La salida será similar a la prueba de funcionamiento, pero sin la etiqueta (PRUEBA DE FUNCIONAMIENTO):
enviando lista de archivos incremental
./
fileA.txt
fileB.txt
subdir/
subdir/subfile1.txt
enviados 186 bytes recibidos 12 bytes 396.00 bytes/seg
tamaño total es 66 aceleración es 0.33
Verifica que los archivos se hayan copiado a dest_dir:
ls -R dest_dir
Debes ver:
dest_dir:
fileA.txt fileB.txt subdir
dest_dir/subdir:
subfile1.txt
Ahora, modifiquemos un archivo en source_dir y agreguemos un nuevo archivo para ver la eficiencia de rsync.
echo "Contenido actualizado para fileA" > source_dir/fileA.txt
echo "Contenido del nuevo archivo" > source_dir/new_file.txt
Realiza otra prueba de funcionamiento para ver qué transferirá rsync esta vez:
rsync -avhn source_dir/ dest_dir/
La salida mostrará solo los archivos modificados y nuevos:
enviando lista de archivos incremental
./
fileA.txt
new_file.txt
enviados 128 bytes recibidos 12 bytes 280.00 bytes/sec
tamaño total es 100 aceleración es 0.71 (PRUEBA DE FUNCIONAMIENTO)
Esto demuestra la capacidad de rsync de transferir solo las diferencias.
Ahora, realiza la sincronización real de nuevo:
rsync -avh source_dir/ dest_dir/
Verifica el contenido de dest_dir de nuevo:
ls -R dest_dir
cat dest_dir/fileA.txt
cat dest_dir/new_file.txt
Debes ver new_file.txt en dest_dir y fileA.txt debe contener "Contenido actualizado para fileA".
Resumen
En este laboratorio, adquirimos experiencia práctica en la gestión y transferencia de archivos en sistemas RHEL utilizando herramientas esenciales de línea de comandos. Comenzamos dominando la utilidad tar, aprendiendo a crear, listar y extraer archivos de archivos, incluyendo la creación de archivos comprimidos tar.gz para un almacenamiento y transferencia eficientes.
Posteriormente, exploramos métodos de transferencia de archivos seguros. Utilizamos sftp para transferencias de archivos interactivas y seguras entre sistemas, comprendiendo sus capacidades para subir y descargar archivos. Finalmente, profundizamos en rsync, una herramienta potente para sincronizar archivos y directorios, destacando su eficiencia en la gestión de actualizaciones incrementales y la garantía de la consistencia de los datos en diferentes ubicaciones.



