• SCP命令在不同远程服务器之间发送文件(指定端口)


    在这里插入图片描述

    最近想把数据集放在另一个服务器上,但是如果先下载到本地然后再上传过去,则需要浪费好久时间。

    特总结下如何快捷的通过命令完成不同远程服务器之间的文件传输,以及遇到的问题。

    SCP命令

    Linux scp 命令用于 Linux 之间复制文件和目录。1
    scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。
    scp 是加密的,rcp 是不加密的,scp 是 rcp 的加强版。

    单个文件的传输

    scp /home/src/1.py username@xxx.xx.xx.xx:/home/des/
    
    • 1
    • /home/src/1.py: 当前命令行所在的主机上的某个文件
    • username: 目标服务器的用户名
    • xxx.xx.xx.xx: 目标服务器的IP地址,scp默认连接的远端主机22端口
    • /home/des/: 目标服务器上的文件位置

    将这些信息换成自己的就可以了。


    整个文件夹的传输

    scp -r /home/src/ username@xxx.xx.xx.xx:/home/des/
    
    • 1

    指定端口传输

    如果目标服务器是一个docker,也就是需要指定特定端口号,则指定参数-P即可, 如下:

    scp -P 18888 -r /home/src/ username@xxx.xx.xx.xx:/home/des/
    
    • 1
    • 18888: 表示docker镜像对应的的端口号

    需要注意的问题

    • 指定端口传输,需注意是参数大写的P.
    • 传输需要保证源文件或文件夹是可读的,目标文件夹是可写的,否则会报如下
    Permission denied, please try again
    
    • 1

    可通过chmod命令暂时修改权限为766,也就是rwx rw- rw-

    chmod 766 xxx.txt
    
    • 1

    然后再改回来(通常文件默认是rwx r-x r-x)

    chmod 755 xxx.txt
    
    • 1

    传输内容为大量的小文件

    当所传输的文件夹中包含大量的小文件,比如数据集(有很多张图片),这时候使用SCP速度会很慢,因为每传输一个文件都需要进行 协议信息确认以及传输结束后的确认信息,这样的开销是非常大的.

    因此通常会结合tar命令打包,然后在发送,能够节省很多倍速度

    cd 需要打包的文件夹
    
    • 1
    tar cf - * | ssh -p 10086 username@xxx.xx.xx.xx "cd /home/des/ && tar xf -"
    
    • 1

    1. Linux scp命令 ↩︎

  • 相关阅读:
    ssh问题Received disconnect from:Too many authentication failures
    php沿河农产品特卖网站的设计与实现毕业设计源码201524
    使用Docker搭建Npm私服Verdaccio
    数据驱动的软件智能化开发| ChinaOSC
    SQLmap 结合本地dnslog实现注入
    「网页开发|前端开发|Vue」09 Vue状态管理Vuex:让页面根据用户登录状态渲染不同内容
    SRT简介
    Win10系统下torch.cuda.is_available()返回为False的问题解决
    软考 - 操作系统
    Ubuntu 多用户管理及 SSH 远程连接
  • 原文地址:https://blog.csdn.net/qq_37344125/article/details/128131841