La transferencia de archivos entre máquinas es una tarea operativa muy común que realizará todo el tiempo como desarrollador.
Linux proporciona una serie de utilidades para transferir archivos. En este tutorial hablaremos sobre FTP
y SCP
. Muchos scripts automatizados también implementan FTP o SCP para mover archivos.
FTP es un protocolo de red utilizado para intercambiar archivos a través de la red. Utiliza el puerto 21. FTP le permite acceder a un sistema remoto para intercambiar archivos utilizando el ftp
comando.
Los comandos FTP son similares a los comandos de Linux. Discutiremos algunos de estos.
Comando | Uso |
abrir | Abre una conexión remota con otra computadora. |
obtener | Copia un archivo del sistema remoto al sistema local. |
poner | Copia un archivo del sistema local a un directorio en el sistema remoto. |
get | Transfiere múltiples archivos desde el sistema remoto al directorio actual del sistema local. |
mput | Transfiere múltiples archivos desde el sistema local a un directorio en el sistema remoto. |
adiós/salir | Se prepara para salir del entorno FTP. |
cerrar | Termina la conexión FTP. |
ascii | Habilita el modo de transferencia de archivos a ASCII |
binario | Habilita el modo de transferencia de archivos a binario. |
Cómo transferir archivos a través de FTP
FTP ofrece dos modos de transferencia:ASCII y binario.
- ASCII significa Código estándar estadounidense para el intercambio de información . Se utiliza para transferir archivos sin formato, como archivos de texto.
- Modo binario :el modo binario se utiliza para transferir archivos que no son de texto, como imágenes.
El modo de transferencia predeterminado es ASCII.
Paso 1:Conéctese a FTP
En el siguiente ejemplo, hostA
es el host remoto. Se le pedirá un nombre de usuario y una contraseña.
$ ftp hostA
Connected to hostA.
220 hostA FTP server ready.
Name (hostA:user): user
331 Password required for user.
Password: password
230 User user logged in.
Remote system type is LINUX.
Una vez que la conexión sea exitosa, notará el ftp>
símbolo al principio. Ahora podemos ejecutar los comandos FTP.
Paso 2:elija el modo de transferencia de archivos
Puede elegir el modo (binario o ASCII) según el tipo de archivo.
ftp> ascii
200 Type set to A.
Paso 3:Transferir archivos
Usamos el get
comando para transferir el archivo sample.txt
desde el servidor FTP remoto a la máquina local.
ftp> get sample.txt
200 PORT command successful.
150 Opening ASCII mode data connection for sample.txt (22 bytes).
226 Transfer complete.
local: sample.txt remote: sample.txt
22 bytes received in 0.012 seconds (1.54 Kbytes/s)
Paso 4. Terminar la sesión
ftp> bye
221-You have transferred 22 bytes in 1 files.
221-Total traffic for this session was 126 bytes in 2 transfers. 221-Thank you for using the FTP service on hostA.
221 Goodbye.
Cómo transferir varios archivos a través de FTP
Para transferir archivos de forma masiva, hay dos comandos:mget
y mput
.
Usas mget
para descargar los archivos, mientras que usa mput
para subir los archivos.
ftp> mget sample_file.1 sample_file.2
ftp> mput sample_file.1 sample_file.2
Todos los pasos que acabamos de aprender se pueden colocar en un archivo ejecutable y programar. Puede encontrar el código para la automatización aquí.
¿Qué es SCP?
SCP significa Copia Segura. Utiliza SSH y el puerto 22. Los datos transferidos a través de SCP están encriptados y los rastreadores no pueden acceder a ellos. Esto hace que SCP sea muy seguro.
Puede usar SCP para:
- Transfiere archivos desde la máquina local al host remoto.
- Transfiere archivos desde el host remoto a la máquina local.
Sintaxis SCP
Exploremos la sintaxis de SCP.
scp [FLAG] [user@]SOURCE_HOST:]/path/to/file1 [user@]DESTINATION_HOST:]/path/to/file2
[FLAG]
especifica las opciones que se le pueden dar a SCP. Aquí hay algunos detalles sobre las banderas:
Bandera | Descripción |
-r | Para copiar directorios recursivamente. |
-q | Se utiliza para ocultar el medidor de progreso y cualquier otra información que no sean errores. |
-C | Se utiliza para comprimir los datos al enviarlos a su destino. |
-P | Especifica el puerto SSH de destino. |
-p | Preserva los tiempos de acceso a los archivos. |
[user@]SOURCE_HOST
es la máquina fuente.
[user@]DESTINATION_HOST:]
es la máquina de destino.
Nota :Para transferir archivos a través de SCP, se deben conocer las credenciales y el usuario debe tener permisos para escribir .
Cómo transferir archivos de la máquina local al host remoto a través de SCP
Para transferir archivos a un host remoto, use el siguiente comando:
scp source_file.txt [email protected]:/path/to/remote/directory
En el comando anterior, source_file.txt
es el archivo a copiar. Remote_username
es el nombre de usuario del host remoto 10.13.13.11
. Después de :
se especifica la ruta de destino.
Salida de muestra:
[email protected]'s password:
source_file.txt 100% 0 0.0KB/s 00:00
El archivo source_file.txt
ahora se colocará en /path/to/remote/directory
.
Para copiar directorios, use -r
como se muestra a continuación.
scp -r /local/directory [email protected]:/path/to/remote/directory
Cómo transferir archivos desde el host remoto a la máquina local a través de SCP
Para transferir archivos desde un host remoto a una máquina local, use el siguiente comando:
scp [email protected]:/remote/source_file.txt /path/to/local/directory
Tenga mucho cuidado al transferir archivos, ya que SCP sobrescribe los archivos ya existentes.
Resumiendo
En este tutorial, aprendió a transferir archivos y directorios mediante FTP y SCP a través de la línea de comandos.
Cuando se automatizan, estos comandos tienen propósitos aún mayores en almacenamiento de datos, ETL (Extracción, Transformación, Carga), generación de informes, archivado y procesamiento masivo de archivos. Prueba estos comandos. Conectémonos en Twitter.