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 usandossh
: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 esescp
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
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íayum
o, para versiones realmente antiguas de CentOS,up2date
orpm
. - +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 comandoscp
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
:
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.
-
cd
donde desea guardar el archivo
$ cd Documents
- Conectar
$ sftp sammy@your_server_ip_or_remote_hostname
- Vaya al directorio que contiene el archivo que se va a transferir.
$ cd NASA/secret_files/
- 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.
scp
para copiar un archivo hacia o desde su máquina local (Sistema A) mientras está conectado a un servidor remoto (Sistema B) conssh
.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 usarscp
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.-P
para especificar el puerto TCP en el host remoto. Esto me atrapa cada vez, porquessh
usa-p
.