{"id":334,"date":"2023-09-01T10:31:51","date_gmt":"2023-09-01T08:31:51","guid":{"rendered":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/?page_id=334"},"modified":"2025-03-07T18:04:32","modified_gmt":"2025-03-07T16:04:32","slug":"1-16-transferencia-de-ficheros-desde-el-terminal","status":"publish","type":"page","link":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/1-16-transferencia-de-ficheros-desde-el-terminal\/","title":{"rendered":"1.16. Transferencia de ficheros desde el terminal"},"content":{"rendered":"<p>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\u00e1ficas para transferir archivos, las opciones de la l\u00ednea de comandos son muy \u00fatiles para la automatizaci\u00f3n y el manejo de grandes cantidades de datos. Ejemplos de diferentes comandos se muestran en la tabla 17.<\/p>\n<div class=\"tabletitle\"><p>Tabla 17. Comandos de transferencia de ficheros.<\/p>\n<\/div>\n<table width=\"602\">\n<tbody>\n<tr class=\"table-header\">\n<td width=\"104\">Comandos<\/td>\n<td width=\"498\">Significado<\/td>\n<\/tr>\n<tr>\n<td width=\"104\"><code>scp<\/code><\/td>\n<td width=\"498\"><em>Secure copy<\/em><\/td>\n<\/tr>\n<tr>\n<td width=\"104\"><code>sftp<\/code><\/td>\n<td width=\"498\"><em>Secure File Transfer Protocol<\/em><\/td>\n<\/tr>\n<tr>\n<td width=\"104\"><code>rsync<\/code><\/td>\n<td width=\"498\">una herramienta r\u00e1pida, vers\u00e1til, remota (y local) de copia de ficheros<\/td>\n<\/tr>\n<tr>\n<td width=\"104\"><code>wget<\/code><\/td>\n<td width=\"498\">Se utiliza para recuperar contenido y ficheros de varios servidores web<\/td>\n<\/tr>\n<tr>\n<td width=\"104\"><code>curl<\/code><\/td>\n<td width=\"498\">La URL del cliente (cURL) os permite intercambiar datos entre el dispositivo y un servidor a trav\u00e9s de una interfaz de l\u00ednea de \u00f3rdenes (CLI)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"tablefooter\"><p>Fuente: elaboraci\u00f3n propia.<\/p>\n<\/div>\n<p>Para establecer una sesi\u00f3n de trabajo es necesario conocer el nombre de la m\u00e1quina remota o su direcci\u00f3n IP. Tambi\u00e9n debemos disponer de un nombre de usuario (en ingl\u00e9s, <em>login name<\/em>) y de una contrase\u00f1a de acceso (en ingl\u00e9s, <em>password<\/em>).<\/p>\n<p>Uno de los comandos m\u00e1s comunes para transferir archivos es <code>scp<\/code> (<em>Secure Copy<\/em>). Este comando se utiliza para copiar archivos de un servidor a otro utilizando el protocolo SSH. La sintaxis b\u00e1sica es la siguiente:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ scp [opciones] origen destino<\/pre>\n<p>Por ejemplo, si queremos copiar el archivo <em>archivo.txt<\/em> de la carpeta origen en el servidor remoto a nuestra carpeta actual en la m\u00e1quina local, podemos utilizar el siguiente comando:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ scp usuario@servidor-remoto:\/path\/al\/origen\/archivo.txt .<\/pre>\n<p>El punto final en la l\u00ednea de comandos indica el directorio actual de la m\u00e1quina local.<\/p>\n<p>Tambi\u00e9n existe el comando <code>sftp<\/code> (en ingl\u00e9s, <em>Secure File Transfer Protocol<\/em>), que es similar al cliente FTP pero con una capa de seguridad adicional a trav\u00e9s de SSH. Con <code>sftp<\/code>, podemos conectarnos a un servidor remoto y transferir archivos de manera segura. La sintaxis b\u00e1sica es la siguiente:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ sftp usuario@servidor-remoto<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">put secuencia.fa repositorio-secuencias\/<\/pre>\n<p>Una vez conectados, podemos utilizar comandos como <code>put<\/code> para enviar archivos desde nuestra m\u00e1quina local al servidor remoto, o <code>get<\/code> para descargar archivos del servidor remoto a nuestra m\u00e1quina local. En el ejemplo anterior, se ha descrito como enviar el archivo <em>secuencia.fa<\/em> desde nuestra m\u00e1quina local a la carpeta repositorio-secuencias en el servidor remoto.<\/p>\n<p>Otro comando \u00fatil es <code>rsync<\/code>, que permite sincronizar directorios y archivos entre dos sistemas. Adem\u00e1s, <code>rsync<\/code> tiene la <em>capacidad<\/em> de transferir solo los archivos modificados, lo que lo hace ideal para hacer copias de seguridad de manera eficiente. La sintaxis b\u00e1sica de <code>rsync<\/code> es la siguiente:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ rsync [opciones] origen destino<\/pre>\n<p>Por ejemplo, si queremos sincronizar la carpeta <em>work-hib<\/em> de nuestro equipo local con la carpeta <em>work<\/em> en un servidor remoto, podemos utilizar el siguiente comando:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ rsync -avz \/path\/a\/work-hib usuario@servidor-remoto:\/path\/a\/work<\/pre>\n<p>Otra herramienta \u00fatil es <code>wget<\/code>, que permite descargar archivos desde servidores web utilizando comandos de terminal. Este comando es muy \u00fatil para descargar datos de secuenciaci\u00f3n de genomas completos o de grandes bases de datos biol\u00f3gicas, archivos desde internet y automatizar el proceso de descarga.\u00a0 Se muestra a continuaci\u00f3n c\u00f3mo descargar la base de datos COSMIC (<em>Catalogue Of Somatic Mutations In Cancer<\/em>) utilizando <code>wget<\/code><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ wget https:\/\/cancer.sanger.ac.uk\/cosmic\/file_download\/GRCh38\/cosmic\/v94\/CosmicCodingMuts.vcf.gz<\/pre>\n<p>Este comando descarga el archivo CosmicCodingMuts.vcf.gz de la p\u00e1gina web del proyecto COSMIC. Este archivo contiene las mutaciones som\u00e1ticas encontradas en la secuenciaci\u00f3n de ADN de tumores de c\u00e1ncer. Una vez descargado, lo pod\u00e9is eliminar, ya que no se har\u00e1 nada con este archivo.<\/p>\n<p>Por \u00faltimo, otra herramienta \u00fatil es <code>curl<\/code>, que tambi\u00e9n permite descargar archivos desde servidores web y transferir archivos desde un terminal. La principal diferencia entre <code>wget<\/code> y <code>curl<\/code> es que <code>curl<\/code> es m\u00e1s vers\u00e1til y permite transferir archivos mediante una gran variedad de protocolos, incluyendo FTP, FTPS, HTTP, HTTPS, SCP y SFTP.<\/p>\n<p>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 <code>scp<\/code><em>, <\/em><code>rsync<\/code><em> y <\/em><code>sftp<\/code> son algunas de las herramientas m\u00e1s comunes y \u00fatiles para transferir archivos de manera segura y eficiente.<\/p>\n<p>Existe un comando que ayuda a averiguar el espacio disponible de un disco, el comando <code>df<\/code> (<em>disk free<\/em>), y otro comando para averiguar el espacio ocupado por una carpeta, el comando <code>du<\/code> (<em>disk use<\/em>). Analicemos un par de ejemplos para ver su funcionamiento.<\/p>\n<ul>\n<li><code>df<\/code><\/li>\n<\/ul>\n<p>Espacio disponible en disco. Esto nos devolver\u00e1 las particiones montadas, el uso de espacio en cada una y lo que nos queda de resto, y todo de forma f\u00e1cil para leer, sobre todo porque se a\u00f1ade la opci\u00f3n <em>-h,<\/em> que significa <em>human-readable<\/em> (en espa\u00f1ol, <em>humanamente legible<\/em>).<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ df -h<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">Filesystem\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Size\u00a0\u00a0\u00a0\u00a0\u00a0 Used \u00a0\u00a0\u00a0\u00a0 Available \u00a0 Use% \u00a0\u00a0  Mounted on\r\n\r\nudev\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0959M\u00a0\u00a0\u00a0\u00a0  0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0 959M\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a00% \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/dev\r\n\r\ntmpfs\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0199M\u00a0     1,4M\u00a0\u00a0\u00a0\u00a0  197M\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a01% \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/run\r\n\r\n\/dev\/sda5\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a020G\u00a0\u00a0 \u00a0   16G\u00a0\u00a0 \u00a0\u00a0 \u00a02,9G\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a085% \u00a0\u00a0\u00a0\u00a0 \/\r\n\r\ntmpfs\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0991M\u00a0\u00a0\u00a0\u00a0  0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0 991M\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a00% \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/dev\/shm\r\n\r\ntmpfs\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0 5,0M\u00a0 \u00a0   4,0K\u00a0\u00a0 \u00a0\u00a0 5,0M\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a01% \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/run\/lock\r\n\r\ntmpfs\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0991M\u00a0\u00a0\u00a0\u00a0  0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0 991M\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a00% \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/sys\/fs\/cgroup\r\n\r\n\/dev\/loop1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a064M\u00a0\u00a0     64M\u00a0\u00a0\u00a0\u00a0   0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0100% \u00a0\u00a0  \/snap\/core20\/1852<\/pre>\n<ul>\n<li><code>du<\/code><\/li>\n<\/ul>\n<p>Tama\u00f1o total de una carpeta. Uso de disco. Muestra el espacio que est\u00e1 ocupado en disco. Este comando tiene varias opciones y las m\u00e1s utilizadas son las opciones <em>-b<\/em> (-<em>bytes<\/em>); <em>-s<\/em> (<em>sumarize<\/em>; en castellano, <em>en resumen<\/em>), <em>-h<\/em> (-<em>human-readable<\/em>; en castellano, <em>humanamente legible<\/em>), que imprime los tama\u00f1os de forma le\u00edble, al agregar el tama\u00f1o de los archivos en kb, mb, gb; y, por \u00faltimo, el comando <em>-c<\/em>, que se emplea para que mostrar el total del espacio consumido, al final de la lista.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ du -hs * | sort -nr | head -5<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">204M\u00a0\u00a0 fasta_sequences\r\n\r\n45M\u00a0\u00a0\u00a0\u00a0Escriptori\r\n\r\n12G\u00a0\u00a0\u00a0\u00a0hg38\r\n\r\n12M\u00a0\u00a0\u00a0\u00a0Work\r\n\r\n4,0K\u00a0\u00a0\u00a0Videos<\/pre>\n<p>Con este ejemplo, se visualizan los 5 directorios m\u00e1s pesados en nuestro\u00a0\/home\/student utilizando el comando <em>du<\/em>, as\u00ed como <em>sort<\/em> para ordenar y <em>head<\/em> para visualizar \u00fanicamente algunos de los directorios de la carpeta.<\/p>\n<p>Y finalmente se mencionan comandos con los que se obtiene informaci\u00f3n del sistema, como son los comandos <code>uname<\/code><em>, <\/em><code>hostname<\/code> y <code>host<\/code>.<\/p>\n<ul>\n<li><code>uname<\/code><\/li>\n<\/ul>\n<p>El comando <code>uname<\/code> (<em>unix name<\/em>). Ofrece informaci\u00f3n sobre Kernel del sistema, informaci\u00f3n sobre el tipo de Linux en el que estamos. Teclea en el terminal<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$\u00a0\u00a0uname<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">Linux<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$\u00a0uname\u00a0-a<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">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<\/pre>\n<ul>\n<li><code>hostname<\/code><\/li>\n<\/ul>\n<p>El comando <code>hostname<\/code> se utiliza para identificar de forma \u00fanica a un ordenador en una red y se utiliza para acceder a \u00e9l y permitir que otros ordenadores de la red se comuniquen con \u00e9l. El <code>hostname<\/code> puede ser un nombre descriptivo o un nombre \u00fanico asignado por el sistema operativo del ordenador o servidor. Por ejemplo, el <code>hostname<\/code> de un servidor web podr\u00eda ser <em>webserver.ejemplo.com<\/em>, donde <em>webserver<\/em> es el nombre del ordenador, <em>ejemplo<\/em> es el nombre del dominio y <em>com<\/em> es el dominio de nivel superior. Si tecleas <em>hostname<\/em> en tu terminal se obtiene<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ hostname -f<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">ubuntum0151<\/pre>\n<p>siendo ubuntum0151 el hostname de la m\u00e1quina virtual que hab\u00e9is instalado.<\/p>\n<ul>\n<li><code>host<\/code><\/li>\n<\/ul>\n<p>El comando <code>host<\/code> determina la IP de HOST, y en el contexto de la inform\u00e1tica, <code>host<\/code> se refiere a un servidor u ordenador que aloja y ofrece servicios o recursos a otros ordenadores conectados en una red. Si se escribe <code>host -a<\/code> se despliega toda la informaci\u00f3n de DNS.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$\u00a0host\u00a0ubuntum0151<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">ubuntum0151 has address 10.0.2.15\r\nubuntum0151 has address 172.17.0.1\r\nubuntum0151 has IPv6 address fe80::1cc6:9af7:249f:6c5e<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$\u00a0host\u00a0-a\u00a0ubuntum0151<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">host -a ubuntum0151\r\n\r\nTrying \"ubuntum0151\"\r\n\r\n;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 27128\r\n\r\n;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0\r\n\r\n\r\n;; QUESTION SECTION:\r\n\r\n;ubuntum0151.\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 IN\u00a0\u00a0 ANY\r\n\r\n\r\nReceived 29 bytes from 127.0.0.53#53 in 188 ms<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>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\u00e1ficas para transferir archivos, las opciones de la l\u00ednea de comandos son muy \u00fatiles para la automatizaci\u00f3n y el manejo de grandes cantidades de datos. Ejemplos de diferentes [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"acf":[],"_links":{"self":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/pages\/334"}],"collection":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/comments?post=334"}],"version-history":[{"count":31,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/pages\/334\/revisions"}],"predecessor-version":[{"id":1318,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/pages\/334\/revisions\/1318"}],"wp:attachment":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/media?parent=334"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}