当前位置: 首页 > news >正文

windows与linux服务器之间通过scp快速并行的文件传输

在大数据时代,有很多数据集包含很多小文件,这些小文件在不同设备之间的传输是一个很大的问题
sftp在传输小文件时,往往很慢。因此下面通过scp进行并行的文件传输,速度提升20倍左右。

首先需要在windows安装openSSH

基于PowerShell的OpenSSH:https://github.com/PowerShell/Win32-OpenSSH/releases
安装步骤
1、进入链接下载最新 OpenSSH-Win64.zip(64位系统),解压至D:\DEVELOPEWORKS\OpenSSH-Win64
2、打开cmd,cd进入D:\DEVELOPEWORKS\OpenSSH-Win64(安装目录),执行命令:

powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1
# 设置服务自启动
sc config sshd start= auto# 启动sshd服务
net start sshd

参考教程
https://blog.csdn.net/boonya/article/details/102811966

然后使用ssh秘钥连接linux服务器(为了并行scp,可以不用重复输入密码)

1. 生成SSH密钥对(如果还没有):

ssh-keygen -t rsa

在生成SSH密钥时,你会被要求输入一些信息。以下是每个步骤的解释:

Enter file in which to save the key (C:\Users\Administrator/.ssh/id_rsa):

这里系统默认会将密钥保存到C:\Users\Administrator/.ssh/id_rsa。通常情况下,你可以直接按回车键使用默认路径。如果你指定了id_rsa.pub作为文件名,系统实际上会生成id_rsa.pub.pub,因为它会自动在文件名后面添加.pub。
建议:直接按回车使用默认路径,或者输入一个你希望存储私钥的路径,比如id_rsa。

Enter passphrase (empty for no passphrase):

你可以选择为你的SSH密钥设置一个密码短语,这样在使用该密钥时需要输入这个密码短语以增加安全性。如果你希望无密码登录,则直接按回车键跳过这个步骤。
建议:如果你希望SSH密钥能够自动登录而不需要每次输入密码,可以直接按回车跳过设置密码短语。

Confirm passphrase: 如果你设置了密码短语,系统会要求你再次输入以确认。

Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\Administrator/.ssh/id_rsa): [按回车]
Enter passphrase (empty for no passphrase): [按回车]
Enter same passphrase again: [按回车]

2. 将公钥复制到远程服务器

手动复制SSH公钥
打开PowerShell或CMD,然后使用以下命令查看并复制公钥的内容:

cat ~/.ssh/id_rsa.pub

在Windows上,如果你使用了默认路径,命令可能需要指定完整路径:

type C:\Users\Administrator\.ssh\id_rsa.pub

这会输出公钥内容,像这样:

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq3Te0nKe...你的公钥内容... user@hostname

连接到远程服务器

ssh -p **** username@**.**.**.**

创建.ssh目录(如果不存在)
一旦连接到服务器,运行以下命令以确保.ssh目录存在:

mkdir -p ~/.ssh
chmod 700 ~/.ssh

将公钥添加到authorized_keys
将上面的公钥内容直接复制到authorized_keys

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq3Te0nKe...你的公钥内容... user@hostname

设置正确的权限

chmod 600 ~/.ssh/authorized_keys

退出服务器
测试无密码登录
完成上述步骤后,你可以尝试从Windows终端使用SSH密钥登录:

ssh -p **** username@**.**.**.**

如果一切正常,你应该能够直接登录到服务器,而无需输入密码。
同样scp也不需要密码,这样就可以通过python程序进行并行scp,且不用重复输入密码了。

最后是并行scp的python脚本

import subprocess
from concurrent.futures import ThreadPoolExecutor
import os
# 定义并行传输的函数
def scp_upload(file_path, remote_path, port=****):command = f"scp -r -C -P {port} {file_path} username@**.**.**.**:{remote_path}"try:subprocess.run(command, shell=True, check=True)print(f"Successfully uploaded {file_path}")except subprocess.CalledProcessError as e:print(f"Error uploading {file_path}: {e}")# 主函数
def main():# 文件列表,可以将所有需要上传的文件或目录放在这里rootPath = 'H:/胎儿胎盘'fList = os.listdir(rootPath)files_to_upload = []for f in fList:ft = os.path.join(rootPath, f)files_to_upload.append(ft)# files_to_upload = [#     "01140623206020/file1",  # 假设每个文件在子目录中#     "01140623206020/file2",#     # 添加更多文件或目录# ]remote_base_path = "/RAID5/projects/fuxingwen/gxb/pregnacy_predict/dataset/BYSY"# 使用ThreadPoolExecutor进行并行上传with ThreadPoolExecutor(max_workers=16) as executor:  # 可以根据CPU数量调整workers数量for file_path in files_to_upload:remote_path = f"{remote_base_path}/{file_path.split('/')[-1]}"executor.submit(scp_upload, file_path, remote_path)if __name__ == "__main__":main()

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 拒绝内卷:利用4P营销理论打造汇报PPT
  • JVM-运行数据区(堆、栈、元空间)
  • 黑神话悟空游戏攻略大全 黑神话悟空内存占用多少 国产3A级游戏《黑神话:悟空》评测代码已发 黑神话悟空测试画质130g MacBook可以玩黑神话悟空吗
  • C++:命名空间与输入输出
  • Go 1.21 新内置函数:min、max 和 clear
  • 如何避免常见的R语言学习陷阱?
  • 数据中台运营与实战案例集锦(125页PPT)
  • 【区块链+金融服务】基于区块链的区域股权金融综合服务平台 | FISCO BCOS应用案例
  • 多台USB 3.0相机启动时部分相机无法打开
  • 【SpringCloud】什么是MQ
  • Linux内核编程(十二)热插拔
  • Linux云计算 |【第二阶段】OPERATION-DAY2
  • CSS 伪类和伪元素
  • 5款好用的录屏软件大测评!2024最新视频录制软件排行榜
  • 8款必备人事管理系统,助力企业高效运营
  • [Vue CLI 3] 配置解析之 css.extract
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • android 一些 utils
  • C# 免费离线人脸识别 2.0 Demo
  • HashMap剖析之内部结构
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • JS题目及答案整理
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • React16时代,该用什么姿势写 React ?
  • spark本地环境的搭建到运行第一个spark程序
  • - 概述 - 《设计模式(极简c++版)》
  • 巧用 TypeScript (一)
  • 正则表达式
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​1:1公有云能力整体输出,腾讯云“七剑”下云端
  • #《AI中文版》V3 第 1 章 概述
  • #Datawhale AI夏令营第4期#AIGC文生图方向复盘
  • $(function(){})与(function($){....})(jQuery)的区别
  • (20)docke容器
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (二)斐波那契Fabonacci函数
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (附源码)计算机毕业设计大学生兼职系统
  • (论文阅读40-45)图像描述1
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (自用)交互协议设计——protobuf序列化
  • .NET BackgroundWorker
  • .NET delegate 委托 、 Event 事件,接口回调
  • .net wcf memory gates checking failed
  • .NET 中 GetProcess 相关方法的性能
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • .net对接阿里云CSB服务
  • .Net各种迷惑命名解释
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
  • @DataRedisTest测试redis从未如此丝滑
  • @开发者,一文搞懂什么是 C# 计时器!
  • []串口通信 零星笔记