Tarde o temprano, se encontrará en una situación en la que tendrá que cargar el archivo en el servidor remoto a través de SSH o copiar un archivo de él.
Hay varias formas de transferir archivos a través de SSH. Voy a discutir los siguientes métodos aquí:
- scp: comando heredado que está en desuso
- rsync: comando popular para la sincronización de archivos
- sshfs: Montaje de directorio remoto sobre SSH
- clientes sftp: herramienta GUI para acceder a archivos a través de SFTP
Para una transferencia de archivos exitosa a través de SSH, debe
- tener acceso SSH entre las dos máquinas
- para saber el nombre de usuario y la contraseña en la máquina remota
- Dirección IP o nombre de host (en la misma subred) de la máquina remota
Aparte de eso, veamos los métodos para copiar archivos entre sistemas remotos a través de SSH.
Método 1: use el comando scp para copiar archivos a través de SSH
He leído que scp quedará obsoleto. Aún así, es mi herramienta favorita para transferir archivos entre sistemas a través de SSH. ¿Por qué? Porque su sintaxis es similar al comando cp.
Veamos cómo usar el comando scp.
Copie archivos de la máquina remota a su máquina local
Aquí está el escenario. Desea copiar archivos del sistema Linux remoto al sistema actualmente conectado.
Aquí hay una sintaxis genérica que copia el archivo del directorio de inicio del usuario en el sistema remoto al directorio actual de su sistema conectado localmente.
scp [email protected]_address:/home/username/filename .
¿Ves la similitud con el comando cp? Es casi lo mismo, excepto que debe especificar el nombre de usuario y la dirección IP con dos puntos (:).
Ahora, déjame mostrarte un mundo real example de este comando.
En el example arriba, copié el archivoremote.txt
desde el/home/abhishek/my_file
directorio en el sistema remoto al directorio actual de la máquina local.
Esto debería darle una pista de que debe saber la ubicación exacta del archivo en el sistema remoto. La finalización de pestañas no funciona en sistemas remotos.
Copie archivos de su máquina local a la máquina remota
El escenario cambia ligeramente aquí. En este, está enviando un archivo local al sistema remoto a través de SSH usando scp.
Esta es una sintaxis genérica que copiará el nombre del archivo en el directorio de inicio del nombre de usuario en el sistema remoto.
scp filename [email protected]_address:/home/username
en lo anterior exampleYo copiélocal.txt
archivo del directorio actual al directorio de inicio del usuarioabhishek
en el sistema remoto.
Luego inicié sesión en el sistema remoto para mostrar que el archivo realmente se había copiado.
También puedes copiar directorios
¿Recuerdas que te dije que me gusta scp por su similitud con el comando cp?
Al igual que el comando cp, también puede usar scp para copiar el directorio a través de SSH. La sintaxis también es similar al comando cp. Solo tienes que usar el-r
opción.
scp -r source_dir [email protected]_address:/home/username/target_dir
Puedes hacer mucho más con él. Lea algunos ejemplos más del comando scp en este tutorial:
Método 2: use rsync para copiar archivos y directorios a través de SSH
Dado que scp está en desuso, rsync es la siguiente mejor herramienta para copiar archivos entre sistemas remotos a través de SSH. En realidad, es mejor que scp en muchos términos.
La sintaxis del comando es la misma que scp. Las versiones anteriores de rsync tenían que usarrsync -e ssh
pero ese ya no es el caso.
Copie archivos de la máquina remota a su máquina local
Supongamos que desea copiar un archivo del directorio de inicio del usuario en el sistema remoto al directorio actual de su sistema conectado localmente.
rsync [email protected]_address:/home/username/filename .
tomemos lo mismo example viste con scp. estoy copiando el archivoremote.txt
desde el/home/abhishek/my_file
directorio en el sistema remoto al directorio actual de la máquina local.
Copie archivos de su máquina local a la máquina remota
Aquí hay una sintaxis genérica que copiará el archivo en el directorio de inicio del nombre de usuario en el sistema remoto.
rsync filename [email protected]_address:/home/username
Es hora de ver el mundo real. example. estoy copiandolocal.txt
archivo del directorio actual al directorio de inicio del usuarioabhishek
en el sistema remoto.
¿Qué hay de copiar directorios con rsync?
Es lo mismo. Solo usa-r
Opción con rsync para copiar todo el directorio a través de SSH entre sistemas remotos.
rsync -r source_dir [email protected]_address:/home/username/target_dir
Mira esto example. Copio todo el directorio my_file del sistema remoto al sistema local.
rsync es una herramienta versátil. Es esencialmente una herramienta para ‘sincronizar recursivamente’ el contenido entre dos directorios y bastante popular para hacer copias de seguridad automatizadas.
Método 3: usar SSHFS para acceder a archivos desde un sistema remoto a través de SSH
También hay SSHFS (sistema de archivos SSH) que se puede usar para acceder a archivos y directorios remotos. Sin embargo, esto no es muy conveniente solo para copiar archivos.
En este método, monta el directorio remoto en su sistema local. Una vez montado, puede copiar archivos entre el directorio montado y el sistema local.
Es posible que primero deba instalar sshfs en su sistema local utilizando el administrador de paquetes de su distribución.
En Debian y Ubuntu, puede usar el siguiente comando:
sudo apt install sshfs
Una vez que haya instalado sshfs en su sistema, puede usarlo para montar el directorio remoto. Sería mejor crear un directorio dedicado para el punto de montaje.
mkdir mount_dir
Ahora monte el directorio deseado en la máquina remota de esta manera:
sshfs [email protected]_address:path_to_dir mount_dir
Una vez que está montado, puede copiar archivos en este directorio o desde este directorio como si estuviera en su propia máquina local.
cp local_file mount_dir
Recuerde que ha montado este archivo. Una vez que haya terminado su trabajo, también debe desmontarlo:
umount mount_dir
Aquí hay un example donde monté elmy_file
directorio del sistema remoto alremote_dir
directorio en el sistema local. copié elremote.txt
archivo al sistema local y luego desmontó el directorio.
Método 4: use un cliente SFTP basado en GUI para transferir archivos entre sistemas remotos
Como último recurso, puede utilizar un cliente FTP para transferir archivos entre sistemas locales y remotos.
ArchivoZillaes uno de los clientes FTP multiplataforma más populares. Puede instalarlo fácilmente en su sistema local.
Una vez instalado, vaya aArchivo->Administrador del sitioy agregue los detalles del sistema remoto, como la dirección IP, el número de puerto SSH, el nombre de usuario y la contraseña.
Una vez que se conecta, puede ver una vista de ventana dividida que muestra el sistema de archivos local a la izquierda y el sistema de archivos remoto a la derecha.
Para transferir el archivo, arrastre y suelte los archivos de izquierda a derecha o de derecha a izquierda. Aparece una barra de progreso en la parte inferior.
¿Qué método prefieres?
¡Bien! Mostré varios métodos de línea de comandos y GUI que se pueden usar para copiar archivos a través de SSH.
Ahora depende de usted decidir qué método usar aquí. Comente su método preferido para transferir archivos a través de SSH.