La mayoría de la gente prefiere utilidades como FileZilla o WinSCP cuando necesitan transferir archivos hacia o desde servidores Linux / BSD. Si el demonio OpenSSH se está ejecutando en esa computadora, puede conectarse a él a través del protocolo FTP seguro / SSH (SFTP). Las utilidades mencionadas facilitan la transferencia de archivos al ofrecer una interfaz gráfica, pero debe instalar y configurar esos programas.
Algunos puristas prefieren no tener que instalar utilidades adicionales. Otras personas simplemente prefieren la línea de comandos porque le da más control y una forma más rápida de decirle a la utilidad lo que quiere que haga. Pero ahora hay una razón adicional para recurrir a la línea de comandos cuando desee transferir archivos. Windows 10 comenzó a incluir, de forma predeterminada, un cliente OpenSSH que le permite iniciar sesión en servidores Linux / BSD directamente desde el símbolo del sistema.
Este cliente también viene con un montón de otras utilidades, y SFTP se encuentra entre ellas. Por lo tanto, ahora también puede transferir archivos a los sistemas operativos Linux / BSD, directamente desde el símbolo del sistema, sin tener que instalar nada en su máquina Windows.
La utilidad sftp también está disponible en máquinas Linux y funciona de la misma manera.
Cómo iniciar sesión con el comando sftp
Si está en Windows, abra el símbolo del sistema. Si está en Linux, abra una ventana de terminal.
Para iniciar sesión en un servidor con sftp
comando, usa exactamente la misma sintaxis que con el ssh
mando. Si no está familiarizado con esta sintaxis, lea el tutorial vinculado en el párrafo de introducción.
sftp your_username@IP-address-or-hostname
Comandos de ejemplo:
sftp john@203.0.113.1 sftp john@example.com
Cómo descargar archivos después de iniciar sesión con sftp
Ahora puede ingresar comandos en el sftp >
mensaje para interactuar con archivos en el servidor.
Para descargar un archivo:
get /path/to/file/on/server
Ejemplo:
get /bin/ls
Esto se descargará en su directorio actual, en el que estaba localmente antes de iniciar sesión en el servidor. Para descargar a un directorio local específico (en Windows):
get /path/to/file/on/server C:pathtolocalfolder
Ejemplo
get /bin/ls C:UserJohnDesktop
En Linux, simplemente usa rutas de tipo Unix (barra diagonal en lugar de barra invertida):
get /bin/ls /home/john/Desktop
Nota: incluso si (incorrectamente) usa barras diagonales para las rutas de Windows, en sftp, parece que la utilidad las entenderá.
Los caminos también pueden ser relativos. Esto significa que si ya estaba en C:UserJohn
cuando abrió el símbolo del sistema, puede descargarlo en su escritorio (C:UserJohnDesktop
) con:
get /bin/ls Desktop
Las rutas remotas también pueden ser relativas, lo que significa que si inicia sesión con sftp john@203.0.113.1
, ya estará en el directorio «/ home / john», por lo que puede usarlo para descargar «/ home / john / file:»
get file Desktop
Esto descargaría «/ home / john / file» a «C: Users YourUser Desktop file».
Para copiar directorios, debe agregar el -r
parámetro al comando, que significa recursivo.
get -r /bin Desktopbin
Recuerde agregar un nombre para el nuevo directorio que desea crear localmente, como «Escritorio bin» en este caso. Si usaras get -r /bin Desktop
, los archivos se copiarán directamente en el escritorio. Son los archivos los que se copian, no el directorio en sí.
Cómo cargar archivos después de iniciar sesión con sftp
La carga de archivos o directorios sigue los mismos principios. La única excepción es que las rutas se invierten, lo que significa que primero especifica el archivo / directorio local y luego la ruta remota.
En Windows:
put C:pathtolocalcontent /path/where/to/upload
En Linux:
put /path/to/local/content /path/to/remote/location
Al cargar directorios (recursivo), recuerde que se aplica la misma regla que en la sección anterior: en realidad son los archivos en el directorio los que se copian, no el directorio en sí. Por lo tanto, especifique un nuevo nombre para el directorio en el que desea copiar esos archivos.
put -r Desktop/bin bin
Esto crearía un nuevo directorio llamado «bin» en el lado remoto.
Para salir del shell sftp, simplemente escriba:
exit
Cómo reanudar transferencias y usar rutas que contienen espacios
Cuando transfiere un archivo grande, si se interrumpe, puede reanudar reemplazando el comando anterior con reput
y reget
en lugar de put
y get
. Solo asegúrese de usar exactamente las mismas rutas que usó la última vez, para que la fuente y el destino coincidan exactamente.
reget /path/to/file/on/server C:pathtolocalfile reput C:pathtolocalfile /path/to/file/on/server
Para reanudar las transferencias de directorio, simplemente agregue el -r
parámetro
reput -r Desktop/bin bin
Si la ruta a un archivo contiene espacios, colóquelo entre comillas.
Esto no funcionará:
put C:Program Files (x86)SteamsteamappscommonThe Witcher 3SOUNDTRACKThe_Witcher_3_Wild_Hunt_-_Official_Soundtrack_(steam_edition)_mp3.zip
Pero esto hará:
put "C:Program Files (x86)SteamsteamappscommonThe Witcher 3SOUNDTRACKThe_Witcher_3_Wild_Hunt_-_Official_Soundtrack_(steam_edition)_mp3.zip"
(Sí, puedes encontrar la banda sonora de Witcher 3 allí si la tienes instalada en Steam).
Conclusión
Esto cubre las cosas más importantes que debe saber sobre sftp. Si encuentra que necesita aprender más, puede leer el manual completo de comandos sftp en línea.