两台linux之间传输文件 linux直连传输文件 (详细+bash脚本)

本文介绍多种Linux设备间文件传输方法,包括通过SSH下载上传、搭建HTTP服务器、使用rsync和securecopy等,并提供bash脚本实现自动化的文件传输。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

两台linux设备文件直接传输,有很多应用场景

一、可能的方案

(一)先下载再上传

从linux通过ssh下载到windows下,然后再通过ssh上传到另一台linux。

1.优点:简单
2.缺点:效率低,需要额外的设备

(二)http服务器

比如通过如nginx,需要被下载的设置目录,另一条linux使用wget下载

1.优点:相对简单
2.缺点:每次要设置,如果目录设置的太宽泛则安全性堪忧。

(三)rsync

rsync搭配一些工具可以实现实时同步,可以参考这篇:
rsync+lsync实时备份
单纯的使用rsync比较简单
1.优点:相对简单
2.缺点:也是要设置目录,操作不灵活。而且rsync吃资源

(四)secure copy(scp)

这个算是比较好的方法,相当于通过ssh直连。
我这里就是用的scp

二、scp具体操作

1.安装scp

apt-get install openssh-client

dnf install openssh-clients

2.具体操作

设备1:192.168.0.100
设备2:192.168.0.200

将本地的文件复制到另一台设备
将设备1的/aaa目录的file.ini复制到设备2的/bbb目录下,使用root登录:

scp /aaa/file.ini root@192.168.0.200:/bbb/

将本地的文件夹(目录)复制到另一台设备

scp -r /aaa/bbb root@192.168.0.200:/bbb/

将另一台设备文件复制到本地设备
将设备2的/bbb目录的file.ini复制到本地的/aaa目录下,使用root登录:

scp root@192.168.0.200:/bbb/file.ini /aaa/

将另一台设备文件夹(目录)复制到本地设备
将另一台设备的/aaa/bbb目录复制到本地的/ccc目录下,使用root登录:

scp -r root@192.168.0.200:/aaa/bbb /ccc/

第一次连接会提示是否继续连接,选择yes,然后输入密码。之后每次都需要设定密码

3.自动填写密码的方法

如果使用这种方法,也要手动传输一次,因为ssh第一次连接会有提示,需要手动yes
每次使用都需要重新输入密码,而且需要两次输入
安装

apt-get install sshpass

或者

yum install sshpass

第一次使用sshpass,先使用手动登录ssh(即一台linux通过ssh登录另一条ssh)

ssh root@192.168.0.200

输入密码就远程登录了ssh,输入exit后退出远程登录的ssh

exit

后然后就可以用sshpass

在上面的命令加上sshpass -p ‘password’ ,引号中的password换成登录密码即可。

sshpass -p 'password' scp /aaa/file.ini root@192.168.0.200:/bbb/
sshpass -p 'password'  scp root@192.168.0.200:/bbb/file.ini /aaa/

三、bash脚本

这个脚本运行前需要先手动scp命令一次,使得可以自动登录,再使用这个脚本即可

1.创建脚本文件

mkdir /etc/sh
vi /etc/sh/scp.sh

注意下面脚本中的常量改为自己的实际情况,下面会有脚本使用方法说明:
修改下面脚本中的ip,登录账户、密码三项

#!/bin/bash

# 常量设置区域(也可以改造成参数)
remote_ip="192.168.0.200" # 连接的设备地址
login_user="root" # 登录的账户
password="aaabbbccc" # 远程root的密码

# 运行区域
if [ $1 == "send" ];
then 
	# 发送文件/文件夹
	if [ -d "$3/$2" ]; then
		sshpass -p $password scp -r $3/$2 $login_user@$remote_ip:$4/
	else
		sshpass -p $password scp $3/$2 $login_user@$remote_ip:$4/
	fi	
elif [ $1 == "get" ]; then
	# 下载文件/文件夹
	if [ $5 ]; then
		if [ $5 == "t" ]; then
			# 文件夹
			sshpass -p $password scp -r $login_user@$remote_ip:$4/$2 $3/
		else
			# 文件
			sshpass -p $password scp $login_user@$remote_ip:$4/$2 $3/
		fi
	else
		# 文件
		sshpass -p $password scp $login_user@$remote_ip:$4/$2 $3/
	fi
else
	echo "请输入传输方式"
fi

赋予执行权限

chmod +x /etc/sh/scp.sh

2.运行及说明

我这个脚本这样用
第一个参数:传输方式,接收(get)还是发送(send)
第二个参数:文件名或目录名(不带上级目录)
第三个参数:本地目录(不带后面的/)
第四个参数:远程目录(不带后面的/)
第五个参数:上传是否为目录,是t,否f(下载时需要写这个参数,因为不能远程执行这些命令,上传时可以进行本地判断,所以不用写这个参数)


(1)将file.ini从本地的/aaa目录发送到远程主机的/bbb/下:

/etc/sh/scp.sh send file.ini /aaa /bbb

(2)从另一台电脑的/aaa目录下的file.ini复制到/bbb

/etc/sh/scp.sh get file.ini /bbb /aaa

(3)将wjj文件夹(目录)从本地的/aaa目录发送到远程主机的/bbb/下:

/etc/sh/scp.sh send wjj /aaa /bbb

(4)将wjj文件夹(目录)从本地的/aaa目录发送到远程主机的/bbb/下:

/etc/sh/scp.sh get wjj /bbb /aaa t

第一次使用sshpass需要先手动登录一下ssh

ssh root@192.168.0.200

输入密码后然后就可以用sshpass跳过了
如果不知道问题在那里,可以sshpass加个 -v参数

sshpass -v -p 'your_password' ssh user@host

如果是有线连接,通常能跑满(受路由器、交换机、两边硬盘速度影响)
我这个是千兆内网(),另外复制的文件从固态硬盘到机械硬盘,速度瓶颈在交换机和机械硬盘上面。
另外还受文件大小影响,如果非常多零散小文件,速度上不了,一个大文件速度通常能跑满
在这里插入图片描述

### Gradio 队列处理事件时出现的错误分析与解决方案 当使用 Gradio 的 `queue` 功能来管理多个并发请求时,可能会遇到类似于 `process_events call_process_api error` 的问题。这种错误通常是由以下几个原因引起的: #### 1. **Pydantic 版本不兼容** 如果项目依赖于 Pydantic 库,并且版本较新,则可能出现类似 `AttributeError: __pydantic_core_schema__` 的错误[^1]。这是因为某些库可能尚未完全适配最新版的 Pydantic。 解决方法: 确保安装的是与当前环境兼容的 Pydantic 版本。可以通过以下命令降级到稳定版本: ```bash pip install pydantic==1.10.* ``` --- #### 2. **异步连接池参数冲突** 在一些情况下,尤其是涉及数据库或其他网络通信模块时,可能会因为传递了未被支持的关键字参数而引发异常,例如 `AsyncConnectionPool.__init__() got an unexpected keyword argument 'socket_options'` 错误[^2]。 解决方法: 检查项目的依赖项配置文件(如 `requirements.txt` 或 `setup.py`),确认所使用的库是否已更新至支持该关键字参数的新版本;或者移除不必要的参数设置。 --- #### 3. **图像初始化函数中的未知参数** 对于 Stable Diffusion 类型的应用程序,在加载图片对象期间也可能触发类似的错误消息——即尝试向某个类实例化过程中传入了一个非法选项 `'tool'`[^3]。 修复方式之一就是查阅官方文档或源码定义部分,找到合法可用属性列表并调整调用语句形式如下所示: ```python from PIL import Image img = Image.new('RGB', (width, height)) # 正确写法 # img = Image(tool='brush') # 错误示范 ``` --- #### 4. **缺少必要组件或编译产物丢失** 最后一种常见情形涉及到本地开发环境中缺失特定资源文件的情况,比如报告说找不到路径下的 `.pyc` 编译缓存副本:“client\types,no such file or directory: gradio\blocks_events.pyc”[^4]。 建议操作步骤包括重新克隆整个仓库、清理旧构建残留物以及再次执行完整的安装流程: ```bash git clone https://github.com/gradio-app/gradio.git cd gradio && pip install . ``` 另外还可以考虑通过 PyInstaller 工具单独定制 EXE 文件的同时指定额外包含的数据目录结构。 --- 综上所述,针对上述提到的各种潜在隐患点逐一排查即可有效缓解乃至彻底消除此类难题的发生几率!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ziqibit

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值