Tengo una serie de archivos de software descargados en mi subdirectorio ~/Downloadsen mi computadora personal. También estoy usando bash para conectarme remotamente a una computadora usando ssh.
¿Es posible transferir este archivo ssha 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
scppara este propósito. Es un medio seguro para transferir archivos utilizando el protocolo SSH.Por ejemplo, para copiar un archivo llamado
yourfile.txtdesde~/Downloadsa una computadora remota, use:Puedes ver más ejemplos aquí .
fuente
rsyncpuede funcionar también, ahora que lo piensoscparriba conrsyncy debería funcionar bien.rsyncpara 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 usoscporsyncen cualquier cosa no se ha comprimido y / o cifrado, recuerde apagar la opción de compresión en (-Cascp,-zo--compresspararsync). 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
scpes 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á
tarel directorio actual en la máquina local, y escribir quetarastdoutlos que a continuación se canaliza a unsshcomando en el que se ejecutará un comando a distancia para descomprimir el archivo se lee destdinEditado 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 basedirargumento paratarextraer 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
sshfssi 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
sshfsinstalado, debería poder instalarlo en su computadora utilizando su administrador de paquetes (busque paquetes con el nombresshfsofuse-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_othery-Cpara 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.
-apara todos los archivos-vpara detallado-Hpara "simplemente descubrir enlaces simbólicos y hacer lo correcto"Otras banderas útiles incluyen:
--deletepara eliminar archivos en el destino que ya no existen en la fuente.--dry-runpara pruebas: muy útil cuando se combina con--delete.Esto usará
sshteclas para iniciar sesión sin contraseña, si las tiene configuradas.Al final de la ejecución,
rsyncle dirá cuántas veces más rápido fue hacer la copia simple nuevamente.fuente
-Hen 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/--archivesí 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
sftppara 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,
sshfsfunciona 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