【经验分享】不同内网服务器之间利用webdav互传文件

目录

  • 0、前言
  • 1、授权webdav应用
  • 2、下载webdavclient3
  • 3、替换相关代码

0、前言

最近,我在处理两台服务器间的文件传输问题时遇到了不少难题。这两台服务器并不处于同一内网环境,导致无法通过SFTP进行文件传输。由于这些服务器属于局域网,并且我没有权限修改网络配置,这使得文件传输变得格外头疼,尤其是当文件体积较大时。

为了解决这个问题,我曾尝试通过租用一个云服务器来架设一个中转站。我使用专用客户端连接到服务器B的内网,通过sock5或http协议连接到我的中转服务器。尽管这种方法可行,但由于使用华为云服务器的带宽限制为4Mb,相当于0.5MB/s的传输速度,这让大文件的传输效率极低,让人十分崩溃。

最近发现了支持WebDAV协议的国内123云盘。通过简单的Python编程,实现文件的上传和下载功能,这样就大大减少了对中转服务器的依赖。感觉还是很开心的
123首页

1、授权webdav应用

123云盘注册:123云盘个人中心(有aff)
123云盘注册:123云盘(无aff)
webdav

这里面的服务器地址对应webdav_hostname

账户对应 webdav_login

应用密码对应 webdav_password

【首次使用请创建应用】

2、下载webdavclient3

pip install webdavclient3

3、替换相关代码

请将如下代码中的webdav_hostname、webdav_login、webdav_password 替换成自己的

from webdav3.client import Client
from webdav3.exceptions import RemoteResourceNotFound
import os# WebDAV配置
config = {'webdav_hostname': "*******",'webdav_login':    "*******",'webdav_password': "*******"
}def upload_file_or_folder(client, local_path, remote_path):if os.path.isdir(local_path):# 上传整个文件夹client.upload_sync(remote_path=remote_path, local_path=local_path)print(f"Folder '{local_path}' has been uploaded to '{remote_path}'.")elif os.path.isfile(local_path):# 上传单个文件client.upload_sync(remote_path=remote_path, local_path=local_path)print(f"File '{local_path}' has been uploaded to '{remote_path}'.")else:print("The specified path does not exist.")def download_file_or_folder(client, remote_path, local_path):try:if client.check(remote_path):  # 检查远程路径是否存在# 下载文件或文件夹client.download_sync(remote_path=remote_path, local_path=local_path)print(f"Resource '{remote_path}' has been downloaded to '{local_path}'.")else:print(f"The resource '{remote_path}' does not exist on the server.")except RemoteResourceNotFound:print(f"No resource found at '{remote_path}'.")except Exception as e:print(f"An error occurred: {e}")def main():client = Client(config)print('client:', client)try:print(client.list())# # 指定本地路径和远程路径local_path = "alphabug.zip"remote_path = "数据备份/alphabug.zip"# 上传文件或文件夹upload_file_or_folder(client, local_path, remote_path)# 下载文件或文件夹#download_file_or_folder(client, remote_path, local_path)except Exception as e:print(f"An error occurred: {e}")if __name__ == "__main__":main()

我把代码放到了123云盘上,可以直接下载。【如果通过分享链接开通会员会走我的aff】

https://www.123pan.com/s/bixmTd-fBGGh.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/849966.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

03-3.3.2_1 栈在表达式求值中的应用(上)

👋 Hi, I’m Beast Cheng👀 I’m interested in photography, hiking, landscape…🌱 I’m currently learning python, javascript, kotlin…📫 How to reach me --> 458290771qq.com 喜欢《数据结构》部分笔记的小伙伴可以订…

跨机拷贝数据工具

1. rsync 支持断点续传单进程拷贝 典型命令 rsync -avurP src/dst/ 会将src目录下的内容(不包括src目录)全部同步到dst目录下

高效文件传输攻略:利用局域网共享实现极速数据同步

最近,我换了一台新电脑,面对两个电脑之间文件备份和传输的问题,感到十分头疼。经过多方了解,我发现可以在原电脑上设置共享文件,然后接收方从共享文件中接受即可,这样可以将局域网的带宽拉满,比…

智能硬件产品中常用的参数存储和管理方案

一、有哪些参数需要管理? 在智能硬件产品中,一般有三类数据需要存储并管理: 1. 系统设置数据 系统设置数据是指产品自身正常工作所依赖的一些参数。 这类数据的特点:只能在生产过程中修改,出厂后用户无权限修改。 比如:产品SN、产品密钥/token/license、传感器校准值…

✔️Vue基础+

✔️Vue基础 文章目录 ✔️Vue基础computed methods watchcomputed计算属性methods计算属性computed计算属性 VS methods方法计算属性的完整写法 watch侦听器(监视器)watch侦听器 Vue生命周期Vue生命周期钩子 工程化开发和脚手架脚手架Vue CLI 项目目录介…

Nvidia/算能 +FPGA+AI大算力边缘计算盒子:隧道和矿井绘图设备

RockMass 正在努力打入采矿业和隧道工程利基市场。 这家位于多伦多的初创公司正在利用 NVIDIA AI 开发一款绘图平台,帮助工程师评估矿井和施工中的隧道稳定性。 目前,作为安全预防措施,地质学家和工程师会站在离岩石五米远的地方&#xff0…

Lua移植到标准ANSI C环境

本文目录 1、引言2、环境准备2.1 源码下载2.2 项目构建环境准备 3、项目编译3.1 添加main.c3.2 Kconfig选择模块3.3 项目构建3.4 项目编译 4、运行 文章对应视频教程: 在下方喔 ~~~ 欢迎关注 点击图片或链接访问我的B站主页~~~ lau解释器移植与功能验证 1、引言 本…

01Linux的安装,时区,固定IP的配置

Linux系统的简介与安装 Linux简介 计算机是由硬件和软件所组成 硬件:计算机系统中由电子,机械和光电元件等组成的各种物理装置的总称软件:是用户和计算机硬件之间的接口和桥梁,用户通过软件与计算机进行交流(操作系统) 操作系统作为用户和…

java-集合使用 2

Vector 类 Vector 类是基于动态数组的数据结构实现的,与 ArrayList 类似,但它是线程安全的。Vector 类的主要特点如下: - 允许包含重复元素; - 允许使用 null 值; - 线程安全; - 查询速度快,但插…

Visual 怎么编程:一场视觉与逻辑的奇妙旅程

Visual 怎么编程:一场视觉与逻辑的奇妙旅程 编程,这一曾经看似高不可攀的技术领域,如今随着可视化编程工具的普及,已逐渐走入寻常百姓家。那么,Visual 怎么编程?本文将从四个方面、五个方面、六个方面和七…

WEB漏洞服务能提供哪些帮助

在数字化浪潮的推动下,Web应用程序已成为企业展示形象、提供服务、与用户进行交互的重要平台。然而,随着技术的飞速发展,Web应用程序中的安全漏洞也日益显现,成为网络安全的重大隐患。这些漏洞一旦被恶意攻击者利用,可…

【Vue】面经基础版-首页请求渲染

步骤分析 1.安装axios 2.看接口文档,确认请求方式,请求地址,请求参数 3.created中发送请求,获取数据,存储到data中 4.页面动态渲染 代码实现 1.安装axios yarn add axios npm i axios 2.接口文档 请求地址: …

Java 数据库连接(JDBC)的使用,包括连接数据库、执行SQL语句等

一、简介 Java Database Connectivity(JDBC)是Java应用程序与关系数据库进行交互的一种API。它提供了一组用于访问和操作数据库的标准接口,使开发人员能够使用Java代码执行数据库操作,如查询、插入、更新和删除等。 二、JDBC架构…

除留取余法构造散列表--c++【做题记录】

【题目描述】 用除留取余法构造散列表,输入序列并实现查找操作。 【算法】 哈希函数使用除留余数法 若已知整个哈希表的最大长度 m,可以取一个不大于 m 的数 p,然后对该关键字 key 做取余运算,即:H(key&a…

gbase 扩容 集群数据同步 主备切换

问题: 问题1磁盘满 1.原本是100G的大小,我们实际还没接入真正业务,昨日空间满了,需要帮忙看下是什么原因导致磁盘满的吗 数据库是每天备份一次,是不是备份的太频繁,还是数据量的问题导致,需要…

[工具探索]富士mini90拍立得使用指南

文章目录 1. 基本功能介绍1.1 相机外观1.2 电池与胶片 2. 设置相机2.1 装入电池2.2 装入胶片 3. 拍摄模式3.1 标准模式3.2 儿童模式3.3 远景模式3.4 双重曝光模式3.5 Bulb(B)模式3.6 **派对模式**3.7 微距模式3.8 **亮度模式**3.9 **定时拍摄模式**3.10 …

Elastic Search(ES)Java 入门实操(2)搜索代码

上篇解释了 ES 的基本概念和分词器。Elastic Search (ES)Java 入门实操(1)下载安装、概念-CSDN博客 Elastic Search(ES)Java 入门实操(3)数据同步-CSDN博客 这篇主要演示 Java 整合…

React Hooks 封装可粘贴图片的输入框组件(wangeditor)

需求是需要一个文本框 但是可以支持右键或者ctrlv粘贴图片,原生js很麻烦,那不如用插件来实现吧~我这里用的wangeditor插件,初次写初次用,可能不太好,但目前是可以达到实现需求的一个效果啦!后面再改进吧~ …

个位为0的数字-第13届蓝桥杯省赛Python真题精选

[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第81讲。 个位为0的数字&am…

秋招突击——算法打卡——6/6——复习{三数之和、考试最大困扰度}——快速新作{环形链表}

文章目录 复习最大考试困扰度三数之和——做的不好 新作环形链表实现代码 明天面试拼多多,因为今天面华为遇到了一个做过的题目,没做出来,关键是这个题目第一次做出来了,这次居然没有做出来,比较烦,所以今天…