Tengo una serie de archivos de software descargados en mi subdirectorio ~/Downloads
en mi computadora personal. También estoy usando bash para conectarme remotamente a una computadora usando ssh
.
¿Es posible transferir este archivo ssh
a la computadora remota?
this file
) y múltiples archivos (a series of software files
), la mejor solución depende de si tiene un solo archivo o varios archivos.Respuestas:
Es posible que desee utilizar
scp
para este propósito. Es un medio seguro para transferir archivos utilizando el protocolo SSH.Por ejemplo, para copiar un archivo llamado
yourfile.txt
desde~/Downloads
a una computadora remota, use:Puedes ver más ejemplos aquí .
fuente
rsync
puede funcionar también, ahora que lo piensoscp
arriba conrsync
y debería funcionar bien.rsync
para todo, incluso para archivos individuales, porque "simplemente funciona" en los casos simples y puede ser mucho más eficiente en otros casos. Si bien el usoscp
orsync
en cualquier cosa no se ha comprimido y / o cifrado, recuerde apagar la opción de compresión en (-C
ascp
,-z
o--compress
pararsync
). De hecho, lo enciendo por hábito: es muy raro que encuentre una circunstancia en la que ralentice las cosas (tal vez si está utilizando un dispositivo lento de baja potencia con una potencia de CPI limitada como un rPi).Aunque
scp
es claramente la herramienta adecuada para esto, si por alguna razón no puede usarlo, puede hacer algo como lo siguiente desde su máquina local para copiar, digamos, una estructura de directorio a la máquina remota:Esto será
tar
el directorio actual en la máquina local, y escribir quetar
astdout
los que a continuación se canaliza a unssh
comando en el que se ejecutará un comando a distancia para descomprimir el archivo se lee destdin
Editado para reflejar el comentario de Dietrich Epp acerca de
-f -
ser el predeterminado en los extremos de creación y extracción, por lo que no es necesario especificarlo explícitamente.fuente
-C basedir
argumento paratar
extraer en otro lugar que no sea su directorio de inicio si está haciendo esto.Si desea hacer esto en más de una rara ocasión, le sugiero que monte el sistema de archivos remoto
sshfs
si está utilizando un tipo Unix que admita FUSE (Linux, * BSD, Mac OS X). Haga un directorio debajo de su directorio de inicio, digamos, llamado ~ / remote-server:Luego monte el sistema de archivos remoto con
sshfs
. Reemplace "yourserver.com" con el nombre de host de su máquina remota y "nombre de directorio remoto" con el directorio que está utilizando en el sistema remoto.Una vez hecho esto, el directorio remoto forma parte de su sistema de archivos y puede usar todas sus herramientas normales, incluyendo
cp
:Si aún no lo ha
sshfs
instalado, debería poder instalarlo en su computadora utilizando su administrador de paquetes (busque paquetes con el nombresshfs
ofuse-sshfs
). Para obtener más información, puede leer un tutorial en línea .Por cierto, esta es mi forma favorita de administrar archivos en servidores remotos. Normalmente mantengo un servidor de producción y dos servidores de desarrollo montados de esta manera y utilizo mi flujo de trabajo de exploración de archivos normal con ellos.
fuente
-o idmap={none,user,file},gid=<remote_user_group_ID>,allow_other
y-C
para la compresión si el ancho de banda es deficiente. Tan pronto como funciona bien, personalmente agrego alias para los comandos para montar rápidamente los sistemas de archivos distantes sobre ssh. @Benjamin_Staton No usaría sudo o root aquí, no sin un mapeo de usuario / grupo adecuado al menos.Primera vez, no hay una diferencia real entre
scp
(copiar másssh
) yrsync
.Las ejecuciones posteriores se beneficiarán si rsync no copia los archivos que ya existen.
-a
para todos los archivos-v
para detallado-H
para "simplemente descubrir enlaces simbólicos y hacer lo correcto"Otras banderas útiles incluyen:
--delete
para eliminar archivos en el destino que ya no existen en la fuente.--dry-run
para pruebas: muy útil cuando se combina con--delete
.Esto usará
ssh
teclas para iniciar sesión sin contraseña, si las tiene configuradas.Al final de la ejecución,
rsync
le dirá cuántas veces más rápido fue hacer la copia simple nuevamente.fuente
-H
en realidad es para enlaces duros, detiene el mismo contenido que se envía dos veces o más cuando está vinculado a más de un lugar en la estructura del directorio de origen (pero puede hacer que el proceso sea menos eficiente para estructuras de directorio grandes). no tiene ningún efecto en los enlaces simbólicos, pero algunas de las opciones incluidas por-a
/--archive
sí afectan cómo se procesan los enlaces simbólicos.Para agregar a las respuestas anteriores. A veces no estoy exactamente seguro acerca de la ruta remota. En estos casos yo uso
sftp
para navegar primero a la ubicación requerida, luego utilizo get o put para descargar o cargar un archivo.Si también desea mantener algo siempre sincronizado e incluso desea ejecutar localmente algún archivo ubicado en una máquina remota,
sshfs
funciona muy bien.fuente
Estoy haciendo algo muy similar con ssh. Creé una herramienta de compilación personalizada para Visual Studio y básicamente estoy haciendo que VS ejecute un comando ssh que copia mi código en una computadora de destino y luego lo compila en esa computadora de destino.
Observe el uso de comillas simples y punto y coma. El primero encapsula sus comandos a hostB a través de ssh y el segundo le permite ejecutar múltiples comandos del sistema hostB en un comando ssh desde hostA.
Para que esto funcione, deberá configurar las claves ssh en su máquina de inicio para que pueda ser usuarioA @ hostA e iniciar sesión en hostB como usuarioB. El proceso para crear una clave ssh pública para userA @ hostA está bien documentado. Si no crea una clave pública en el hostA para el usuarioA, y copia esa clave en el hostB como usuarioB, entonces se verá obligado a ingresar su contraseña cada vez, lo que arruina la alegría de la automatización.
fuente