1. Introducció als entorns de treball UNIX

1.16. Transferència de fitxers des del terminal

La transferència d’arxius des d’un terminal és una tasca fonamental per als administradors de sistemes i desenvolupadors que treballen amb servidors remots. Tot i que hi ha moltes eines gràfiques per transferir arxius, les opcions de la línia d’ordres són molt útils per a l’automatització i el maneig de grans quantitats de dades. Exemples de diferents ordres es mostren a la taula 17.

Taula 17. Ordres de transferència de fitxers.

Ordre Significat
scp Secure copy
sftp Secure File Transfer Protocol
rsync una eina ràpida, versàtil, remota (i local) de còpia de fitxers
wget Podeu utilitzar-lo per recuperar contingut i fitxers de diversos servidors web
curl curl          L’URL del client (cURL) us permet intercanviar dades entre el dispositiu i un servidor a través d’una interfície de línia d’ordres (CLI)

Font: elaboració pròpia.

Per establir una sessió de treball cal conèixer el nom de la màquina remota o la seva adreça IP. També hem de disposar d’un nom d’usuari (en anglès, login name) i d’una contrasenya d’accés (en anglès, password).

Una de les ordres més comunes per transferir arxius és scp (Secure Copy). Aquesta ordre s’utilitza per copiar arxius d’un servidor a un altre utilitzant el protocol SSH. La sintaxi bàsica és la següent:

$ scp [opcions] origen destí

Per exemple, si volem copiar l’arxiu arxiu.txt de la carpeta origen del servidor remot a la nostra carpeta actual a la màquina local, podem utilitzar l’ordre següent:

$ scp usuario@servidor-remoto:/path/al/origen/arxiu.txt .

El punt final en la línia d’ordre indica el directori actual de la màquina local.

També existeix l’ordre sftp (en anglès, Secure File Transfer Protocol), que és similar al client FTP però amb una capa de seguretat addicional a través de SSH. Amb sftp, podem connectar-nos a un servidor remot i transferir arxius de manera segura. La sintaxi bàsica és la següent:

$ sftp usuario@servidor-remot
put seqüencia.fa repositori-seqüencies/

Un cop connectats, podem utilitzar ordres com put per enviar arxius des de la nostra màquina local al servidor remot, o get per descarregar arxius del servidor remot a la nostra màquina local. En l’exemple anterior, hem descrit com podem enviar l’arxiu seqüència.fa des de la nostra màquina local a la carpeta repositori-seqüències en el servidor remot.

Una altra ordre útil és rsync, que permet sincronitzar directoris i arxius entre dos sistemes. A més, rsync té la capacitat de transferir només els arxius modificats, cosa que el fa ideal per fer còpies de seguretat de manera eficient. La sintaxi bàsica de rsync és la següent:

$ rsync [opciones] origen destí

Per exemple, si volem sincronitzar la carpeta work-hib del nostre equip local amb la carpeta work en un servidor remot, podem utilitzar l’ordre següent:

$ rsync -avz /path/a/work-hib usuario@servidor-remoto:/path/a/work

Una altra eina útil és wget, que permet descarregar arxius des de servidors web fent ús d’ordres de terminal. Aquesta ordre és molt útil per descarregar dades de seqüenciació de genomes complets o de grans bases de dades biològiques, arxius des d’internet i automatitzar el procés de descàrrega. Es mostra a continuació com descarregar la base de dades COSMIC (Catalogue Of Somatic Mutations In Cancer) utilitzant wget

$ wget https://cancer.sanger.ac.uk/cosmic/file_download/GRCh38/cosmic/v94/CosmicCodingMuts.vcf.gz

Aquesta ordre descarrega l’arxiu CosmicCodingMuts.vcf.gz de la pàgina web del projecte COSMIC. Aquest arxiu conté les mutacions somàtiques trobades en la seqüenciació d’ADN de tumors de càncer. Un cop descarregat, el podeu eliminar, ja que no en farem res d’aquest arxiu.

Finalment, una altra eina útil és curl, que també permet descarregar arxius des de servidors web i transferir arxius des d’un terminal. La principal diferència entre wget i curl és que curl és més versàtil i permet transferir arxius mitjançant una gran varietat de protocols, incloent-hi FTP, FTPS, HTTP, HTTPS, SCP i SFTP.

En resum, la transferència d’arxius des d’un terminal és una tasca fonamental per als administradors de sistemes i desenvolupadors que treballen amb servidors remots. Les ordres scp, rsync i sftp són algunes de les eines més comunes i útils per transferir arxius de manera segura i eficient.

Hi ha una ordre que ajuda a esbrinar l’espai disponible d’un disc, l’ordre df (disk free), i una altra per esbrinar l’espai ocupat per una carpeta, l’ordre du (disk use). Analitzem un parell d’exemples per veure el seu funcionament.

  • df

Espai disponible en disc. Això ens retornarà les particions muntades, l’ús d’espai en cadascuna i el que ens queda de resta, i tot de forma fàcil per llegir, sobretot perquè s’hi afegeix l’opció -h, que significa human-readable (en català, humanament llegible).

$ 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

Mida total d’una carpeta. Ús de disc. Mostra l’espai que està ocupat en disc. Aquesta ordre té diverses opcions i les més utilitzades són les opcions -b (-bytes); -s (sumarize; en català, en resum), -h (-human-readable; en català, humanament llegible), que imprimeix les mides de forma llegible, quan agreguem la mida dels arxius en kb, mb, gb; i, finalment, l’ordre -c, que emprarem per mostrar el total de l’espai consumit, al final de la llista.

$ du -hs * | sort -nr | head -5
204M   fasta_sequences

45M    Escriptori

12G    hg38

12M    Work

4,0K   Videos

Amb aquest exemple, es visualitzen els 5 directoris més pesants en el nostre /home/student utilitzant l’ordre du, així com sort per ordenar i head per visualitzar únicament alguns dels directoris de la carpeta.

I finalment s’esmenten ordres amb les quals s’obté informació del sistema, com són uname, hostname y host.

  • uname

L’ordre uname (unix name). Ofereix informació sobre Kernel del sistema, informació sobre el tipus de Linux en el qual estem. Teclegeu 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

L’ordre hostname s’utilitza per identificar de forma única un ordinador en una xarxa i s’utilitza per accedir-hi i permetre que altres ordinadors de la xarxa s’hi comuniquin. El hostname pot ser un nom descriptiu o un nom únic assignat pel sistema operatiu de l’ordinador o servidor. Per exemple, el hostname d’un servidor web podria ser webserver.exemple.com, on webserver és el nom de l’ordinador, exemple és el nom del domini i com és el domini de nivell superior. Si teclegeu hostname al vostre terminal s’obté:

$ hostname -f
ubuntum0151

sent ubuntum0151 el hostname de la màquina virtual que heu instal·lat.

  • host

L’ordre host determina l’IP d’HOST, i en el context de la informàtica, host es refereix a un servidor o ordinador que allotja i ofereix serveis o recursos a altres ordinadors connectats en una xarxa. Si s’escriu host -a es desplega tota la informació 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