Cómo copiar archivos de una máquina a otra usando ssh

Estoy usando una máquina Linux (centos), ya me conecté al otro sistema usando ssh. Ahora mi pregunta es ¿cómo puedo copiar archivos de un sistema a otro sistema?

Supongamos que, en mi entorno, tengo dos sistemas como System A y System B. Estoy» usando una máquina System A y alguna otra usando System B máquina.

¿Cómo puedo copiar un archivo de System B a System A? Y, copie un archivo de System A a System B?

Comentarios

  • Encuentro que scp a menudo es una piedra incómoda. Si puede satisfacer sus necesidades, pruebe esto linuxjournal.com/article/8904 . Monta el sistema de archivos remoto localmente.
  • @Alan Creo que te refieres a » engorroso «. Cumber Stone es una tarjeta Magic 😉
  • algo relacionada: crea un archivo cifrado de dir/ local en una máquina remota usando ssh : tar -c dir/ | gzip | gpg -c | ssh user@remote 'dd of=dir.tar.gz.gpg'
  • Si tiene acceso al ftp del servidor remoto, también podemos usar wget para descargar como $wget -r --level=9 --no-parent --reject "index.html*" ftp://<USERID>:<PASSWORD>@<MACHINE-NAME>/path/to Referencia1 Referencia2
  • No está duplicado, la pregunta vinculada específicamente pide no usar scp; para ese scp está bien y es la forma más fácil como respuesta, por lo que los mods eliminan la bandera duplicada como si alguien fuera a ir a otra, la respuesta más útil se perderá.

Responder

Sintaxis:

scp <source> <destination> 

Para copie un archivo de B a A mientras está conectado a B:

scp /path/to/file username@a:/path/to/destination 

Para copiar un archivo de B a A mientras está conectado a A:

scp username@b:/path/to/file /path/to/destination 

Comentarios

  • Para aclarar, normalmente don ‘ t use scp para copiar un archivo hacia o desde su máquina local (Sistema A) mientras está conectado a un servidor remoto (Sistema B) con ssh. scp lo registrará en el servidor remoto, copiará el archivo y luego lo cerrará nuevamente en un proceso, así que ejecútelo desde un shell en su máquina local. Dicho esto, puede usar scp si ‘ ha iniciado sesión en el Sistema B a través de SSH y desea copiar archivos entre el Sistema B y el Sistema. C.
  • @DopeGhoti. Sí, puede ‘ t mover archivos entre dos computadoras remotas. El origen o el destino deben ser un archivo local. Sin embargo, si inicia sesión en una máquina remota con ssh, puede copiar archivos entre dos máquinas remotas en la línea de comandos de esa ‘.
  • Además, una cosa importante para recordar es que solo puede acceder a una carpeta en la máquina de destino para la que tiene permisos. Si está intentando copiarlo en un destino para el que el usuario de destino no tiene permiso, primero copie el archivo en el directorio de inicio o subdirectorio de ‘ del usuario y luego ssh en el la máquina de destino y sudo moverlo al destino final
  • Recuerde -r (recursivo) y -p (preservar los metadatos del sistema): scp -rp < file1 > < file2 >
  • Sí, use -P para especificar el puerto TCP en el host remoto. Esto me atrapa cada vez, porque ssh usa -p.

Responder

En caso de que necesite un enfoque alternativo.

Instale sshfs. si usa ubuntu / debian:

sudo apt-get install sshfs 

o, si usa centos / rhel:

sudo yum install fuse-sshfs 

o, en macOS

brew install sshfs 

Cree un directorio vacío

mkdir /home/user/testdir 

«enlazar» o «montar» los dos directorios

sshfs [email protected]:/remote/dir /home/user/testdir 

«desvincular» los directorios

fusermount -u /home/user/testdir 

En BSD y macOS, para desmontar el sistema de archivos:

umount mountpoint 

o

diskutil unmount mountpoint 

Para obtener más información, consulte aquí linuxjournal.com libfuse / sshfs

Comentarios

  • La pregunta establece específicamente que el sistema operativo en cuestión es CentOS; no derivado de Debian. apt-get es un debianismo; el administrador de paquetes correcto sería yum o, para versiones realmente antiguas de CentOS, up2date o rpm.
  • +1 la respuesta para esta pregunta puede estar fuera de contexto, pero aún así me ayudó, y hasta donde puedo ver, a otros también.
  • No relacionado, pero ‘ una respuesta de un millón de dólares xD
  • Si comprendo correctamente, ¿esto da ACCESO a los archivos remotos, pero no los COPIA?
  • @ ToolmakerSteve usted ‘ tiene toda la razón: crea un directorio falso (montaje), para que pueda usar todas sus herramientas preferidas para copiar o mover cosas: cp, mv, rm, rsync, unison … El comando scp solo podría copiar archivos.

Respuesta

A veces necesitas ser elegante con tar:

tar -C / -cf - \ opt/widget etc/widget etc/cron.d/widget etc/init.d/widget \ --exclude=opt/widget/local.conf | ssh otherhost tar -C / -xvf - 

Comentarios

  • ¿Creatividad? Así es como solíamos compartir unidades de cinta. 🙂
  • ¿Puede decirnos qué hace esto? Por ejemplo, no tengo idea de qué tiene que ver ‘ cron ‘ con la copia de archivos.
  • @aliqandil opt / widget etc / widget etc / cron.d / widget etc / init.d / widget son archivos individuales que se incluirán en el archivo tar. El punto era ilustrar por qué a veces necesitas ser elegante. Esta serie de comandos transmite el archivo tar a través de una conexión ssh y lo desarchiva en el otro lado. Por lo tanto, ningún archivo tar se escribe en el disco. A veces lo uso para seleccionar archivos y copiarlos en un solo comando.
  • ¡Ay! ¡Enseñé que la primera ‘ / ‘ era la ruta de origen! (¿Qué es?) ¡Así que esa fue una pregunta tonta! Gracias. 🙂
  • Tar se dirigirá a » / «, por lo que todas las siguientes rutas son relativas a » / «.

Respuesta

Si desea mantener sincronizados los archivos de ambos sistemas, eche un vistazo al programa rsync:

(ver tutorial aquí)

Comentarios

  • Esta es una verdadera herramienta profesional.

Respuesta

Si tiene uno de los sistemas operativos comunes, puede instalar pigz que es el mismo que gzip excepto que usará múltiples núcleos y sea más rápido en una red rápida. Mi comando es un poco diferente.

tar cf - -C /opt -S <dir> | pigz | ssh <target> "pigz -d | tar xf - -C /opt -S" 

o al revés para obtener archivos

ssh <target> "tar cf - -C /opt -S <dir> | pigz" | pigz -d | tar xf - -C /opt -S 

o haga una copia de seguridad de los archivos raíz con

ssh <target> "tar cf - -C / --one-file-system -S --numeric-owner . | pigz" > root.tgz 

Comentarios

Responder

Un método más simple que funciona a través de computadoras NVIDIA Jetson controladas por SSH es conectarse con SFTP (Protocolo de transferencia de archivos SSH).

Supongamos que deseo mover el documento UFO_blueprint.odt de los servidores remotos de la NASA y moverlo a mis Documentos.

  1. cd donde desea guardar el archivo
$ cd Documents 
  1. Conectar
$ sftp sammy@your_server_ip_or_remote_hostname 
  1. Vaya al directorio que contiene el archivo que se va a transferir.
$ cd NASA/secret_files/ 
  1. Transferencia
$ get UFO_blueprint.odt 

Para obtener el directorio completo, use

$ get -r secret_files/ 

Comentarios

  • use put comando para cargar archivos

Responder

Copia recursiva Unix / Linux de archivos y carpetas sobre un shell seguro usando el siguiente código:

scp -r <host@machine_name:from_remote_directory_path> <to_local_directory_path> 

Un ejemplo completo podría verse así:

scp -r sizwe@hprobook:./home/sizwe/PycharmProjects ./home/immaculate/OtherPycharmProjects 

Tenga en cuenta que si no tiene un servidor DNS para resolver nombres de host, utilice su dirección IP en su lugar. El ejemplo anterior podría verse así

scp -r 192.168.43.167:./home/sizwe/PycharmProjects ./home/immaculate/OtherPycharmProjects 

Responder

Si están ejecutando SCP / SSH en un puerto diferente, asegúrese de especificar la opción de puerto -P mayúscula.

Ejemplo:

 scp -P 7121 /users/admin/downloads/* [email protected]:/home/  

Comentarios

  • Esta pregunta tiene siete años y muchas respuestas. ya. Si bien es cierto que ssh puede usar puertos no predeterminados y la opción ‘ s -P del cliente ssh es necesaria, no ‘ Realmente no ayuda con el problema en cuestión. Intente concentrarse en preguntas recientes.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *