1.16. Transferencia de ficheros desde el terminal
La transferencia de archivos desde un terminal es una tarea fundamental para los administradores de sistemas y desarrolladores que trabajan con servidores remotos. Aunque existen muchas herramientas gráficas para transferir archivos, las opciones de la línea de comandos son muy útiles para la automatización y el manejo de grandes cantidades de datos. Ejemplos de diferentes comandos se muestran en la tabla 17.
Tabla 17. Comandos de transferencia de ficheros.
Comandos | Significado |
scp |
Secure copy |
sftp |
Secure File Transfer Protocol |
rsync |
una herramienta rápida, versátil, remota (y local) de copia de ficheros |
wget |
Se utiliza para recuperar contenido y ficheros de varios servidores web |
curl |
La URL del cliente (cURL) os permite intercambiar datos entre el dispositivo y un servidor a través de una interfaz de línea de órdenes (CLI) |
Para establecer una sesión de trabajo es necesario conocer el nombre de la máquina remota o su dirección IP. También debemos disponer de un nombre de usuario (en inglés, login name) y de una contraseña de acceso (en inglés, password).
Uno de los comandos más comunes para transferir archivos es scp
(Secure Copy). Este comando se utiliza para copiar archivos de un servidor a otro utilizando el protocolo SSH. La sintaxis básica es la siguiente:
$ scp [opciones] origen destino
Por ejemplo, si queremos copiar el archivo archivo.txt de la carpeta origen en el servidor remoto a nuestra carpeta actual en la máquina local, podemos utilizar el siguiente comando:
$ scp usuario@servidor-remoto:/path/al/origen/archivo.txt .
El punto final en la línea de comandos indica el directorio actual de la máquina local.
También existe el comando sftp
(en inglés, Secure File Transfer Protocol), que es similar al cliente FTP pero con una capa de seguridad adicional a través de SSH. Con sftp
, podemos conectarnos a un servidor remoto y transferir archivos de manera segura. La sintaxis básica es la siguiente:
$ sftp usuario@servidor-remoto
put secuencia.fa repositorio-secuencias/
Una vez conectados, podemos utilizar comandos como put
para enviar archivos desde nuestra máquina local al servidor remoto, o get
para descargar archivos del servidor remoto a nuestra máquina local. En el ejemplo anterior, se ha descrito como enviar el archivo secuencia.fa desde nuestra máquina local a la carpeta repositorio-secuencias en el servidor remoto.
Otro comando útil es rsync
, que permite sincronizar directorios y archivos entre dos sistemas. Además, rsync
tiene la capacidad de transferir solo los archivos modificados, lo que lo hace ideal para hacer copias de seguridad de manera eficiente. La sintaxis básica de rsync
es la siguiente:
$ rsync [opciones] origen destino
Por ejemplo, si queremos sincronizar la carpeta work-hib de nuestro equipo local con la carpeta work en un servidor remoto, podemos utilizar el siguiente comando:
$ rsync -avz /path/a/work-hib usuario@servidor-remoto:/path/a/work
Otra herramienta útil es wget
, que permite descargar archivos desde servidores web utilizando comandos de terminal. Este comando es muy útil para descargar datos de secuenciación de genomas completos o de grandes bases de datos biológicas, archivos desde internet y automatizar el proceso de descarga. Se muestra a continuación cómo descargar la base de datos COSMIC (Catalogue Of Somatic Mutations In Cancer) utilizando wget
$ wget https://cancer.sanger.ac.uk/cosmic/file_download/GRCh38/cosmic/v94/CosmicCodingMuts.vcf.gz
Este comando descarga el archivo CosmicCodingMuts.vcf.gz de la página web del proyecto COSMIC. Este archivo contiene las mutaciones somáticas encontradas en la secuenciación de ADN de tumores de cáncer. Una vez descargado, lo podéis eliminar, ya que no se hará nada con este archivo.
Por último, otra herramienta útil es curl
, que también permite descargar archivos desde servidores web y transferir archivos desde un terminal. La principal diferencia entre wget
y curl
es que curl
es más versátil y permite transferir archivos mediante una gran variedad de protocolos, incluyendo FTP, FTPS, HTTP, HTTPS, SCP y SFTP.
En resumen, la transferencia de archivos desde un terminal es una tarea fundamental para los administradores de sistemas y desarrolladores que trabajan con servidores remotos. Los comandos scp
, rsync
y sftp
son algunas de las herramientas más comunes y útiles para transferir archivos de manera segura y eficiente.
Existe un comando que ayuda a averiguar el espacio disponible de un disco, el comando df
(disk free), y otro comando para averiguar el espacio ocupado por una carpeta, el comando du
(disk use). Analicemos un par de ejemplos para ver su funcionamiento.
df
Espacio disponible en disco. Esto nos devolverá las particiones montadas, el uso de espacio en cada una y lo que nos queda de resto, y todo de forma fácil para leer, sobre todo porque se añade la opción -h, que significa human-readable (en español, humanamente legible).
$ df -h
Filesystem Size Used Available Use% Mounted on udev 959M 0 959M 0% /dev tmpfs 199M 1,4M 197M 1% /run /dev/sda5 20G 16G 2,9G 85% / tmpfs 991M 0 991M 0% /dev/shm tmpfs 5,0M 4,0K 5,0M 1% /run/lock tmpfs 991M 0 991M 0% /sys/fs/cgroup /dev/loop1 64M 64M 0 100% /snap/core20/1852
du
Tamaño total de una carpeta. Uso de disco. Muestra el espacio que está ocupado en disco. Este comando tiene varias opciones y las más utilizadas son las opciones -b (-bytes); -s (sumarize; en castellano, en resumen), -h (-human-readable; en castellano, humanamente legible), que imprime los tamaños de forma leíble, al agregar el tamaño de los archivos en kb, mb, gb; y, por último, el comando -c, que se emplea para que mostrar el total del espacio consumido, al final de la lista.
$ du -hs * | sort -nr | head -5
204M fasta_sequences 45M Escriptori 12G hg38 12M Work 4,0K Videos
Con este ejemplo, se visualizan los 5 directorios más pesados en nuestro /home/student utilizando el comando du, así como sort para ordenar y head para visualizar únicamente algunos de los directorios de la carpeta.
Y finalmente se mencionan comandos con los que se obtiene información del sistema, como son los comandos uname
, hostname
y host
.
uname
El comando uname
(unix name). Ofrece información sobre Kernel del sistema, información sobre el tipo de Linux en el que estamos. Teclea en el terminal
$ uname
Linux
$ uname -a
Linux ubuntum0151 5.15.0-71-generic #78~20.04.1-Ubuntu SMP Wed Apr 19 11:26:48 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
hostname
El comando hostname
se utiliza para identificar de forma única a un ordenador en una red y se utiliza para acceder a él y permitir que otros ordenadores de la red se comuniquen con él. El hostname
puede ser un nombre descriptivo o un nombre único asignado por el sistema operativo del ordenador o servidor. Por ejemplo, el hostname
de un servidor web podría ser webserver.ejemplo.com, donde webserver es el nombre del ordenador, ejemplo es el nombre del dominio y com es el dominio de nivel superior. Si tecleas hostname en tu terminal se obtiene
$ hostname -f
ubuntum0151
siendo ubuntum0151 el hostname de la máquina virtual que habéis instalado.
host
El comando host
determina la IP de HOST, y en el contexto de la informática, host
se refiere a un servidor u ordenador que aloja y ofrece servicios o recursos a otros ordenadores conectados en una red. Si se escribe host -a
se despliega toda la información de DNS.
$ host ubuntum0151
ubuntum0151 has address 10.0.2.15 ubuntum0151 has address 172.17.0.1 ubuntum0151 has IPv6 address fe80::1cc6:9af7:249f:6c5e
$ host -a ubuntum0151
host -a ubuntum0151 Trying "ubuntum0151" ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27128 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;ubuntum0151. IN ANY Received 29 bytes from 127.0.0.53#53 in 188 ms