基于curl和wget命令编写的多文件或大文件批量上传下载

news2024/11/26 18:48:30

      最近需要在windows和服务器linux系统之间传递大量的文件,部分文件非常大(TB以上),并且文件夹中包含文件或文件夹,需要先进行上传再进行组织,因此就想办法结合curl和wget命令编写了命令或脚本工具,供大家参考学习。本文主要实现了单文件上传下载,多文件/嵌套文件夹上传下载,如果需要续传,记得加上-C参数。

1.指定单个文件下载

curl -u 用户名:密码 -O http://域名/video/output-20241010_110705.mp4

wget --user=用户名 --password=密码 http://域名/video/output-20241010_110705.mp4

2.指定文件列表下载

下载文件列表存放在urls.txt中。下载脚本(downloadBatchGet.sh和downloadBatchCurl.sh)如下,命令行输入参数为urls.txt。

# wget命令 downloadBatchGet.sh
# 命令行运行方式:./downloadBatchGet.sh urls.txt
wget --user=用户名 --password=密码 -i $1

# curl命令 downloadBatchCurl.sh
# 命令行运行方式:./downloadBatchCurl.sh urls.txt
while read url; do
  echo $url
  curl -u 用户名:密码 -O $url
done < $1

# urls.txt文件内容
http://域名/video/info.db
http://域名/video/output-20241010_110705.mp4
3.客户端上传单个文件

curl -u 用户名:密码 -T model-1-of-00002.safetensors http://域名/video/

4.客户端上传指定文件夹及子文件夹的所有文件

目前不支持自动创建文件夹,只能通过递归获取文件并完成所有文件上传,或者指定目录的所有文件上传,详见以下两个脚步。
1)指定目录下所有文件上传脚本:./uploadBatch.sh /mnt/e/temp2

#!/bin/bash
#上传URL
URL="http://域名/video/"
#上传文件夹路径
#FOLDER="/mnt/e/temp2"

for FILE in "$1"/*; do
    echo "Processing $FILE"
    # 在这里添加你需要对每个文件执行的命令
    #构造curl命令,将文件上传至服务器
    curl -u 用户名:密码 -T "$FILE" $URL
done

2)指定目录及其子目录及以下的所有文件上传脚本:./uploadBatchTraverse.sh /mnt/e/temp2

#!/bin/bash
#上传URL
URL="http://域名/video/"
#上传文件夹路径
FOLDER="/mnt/e/temp2"
traverse_dir(){
    for file in $1/* #这里的$1是通过递归调用传入。
    do
        if [ -d $file ]
        then 
            #echo $file
            traverse_dir $file
        elif [ -f $file ]
        then
            echo $file
	    #构造curl命令,将文件上传至服务器
	    curl -u 用户名:密码 -T "$file" $URL
        fi
    done
}
#traverse_dir "$FOLDER"
traverse_dir $1 #这里的$1是通过bash命令行传入。
5、常见问题解决方案与注意事项

1)bash for 未预期的符号 `$‘do\r‘‘ 附近有语法错误
解决方法:vim uploadbatch.sh,在保存模式下输入:set ff=unix即可。
注意:urls.txt文件保存时,也需要采用这种方式来保存一下。
2)其他注意事项

文件夹中的文件名长度不能太长,否则会无法上传成功。

6、上传下载效果截图

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

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

相关文章

三菱PLC伺服-停止位置不正确故障排查

停止位置不正确时&#xff0c;请确认以下项目。 1)请确认伺服放大器(驱动单元)的电子齿轮的设定是否正确。 2&#xff09;请确认原点位置是否偏移。 1、设计近点信号(DOG)时&#xff0c;请考虑有足够为0N的时间能充分减速到爬行速度。该指令在DOG的前端开始减速到爬行速度&…

【云从】六、云存储

文章目录 1、应用架构2、存储设备3、存储方案3.1 直连式存储DAS3.2 网络连接存储NAS3.3 存储区域网络SAN3.4 分布式存储ServerSAN3.5 软件定义存储SDS 4、云存储4.1 云硬盘CBS4.2 文件存储CFS4.3 对象存储COS 1、应用架构 2、存储设备 硬盘性能对比&#xff1a; 硬盘接口对比&…

C语言(函数)—函数栈帧的创建和销毁

目录 前言 补充知识 一、函数线帧是什么&#xff1f; 二、函数线帧的实现&#xff08;举例说明&#xff09; 两数之和代码 ​编辑两数之和 汇编代码分析 执行第一条语句 执行第二条语句 执行第三条语句 执行第四、五、六条语句 执行第七条语句 执行第八、九、十条语句 执行第十…

Scroll 生态首个 meme 项目 $Baggor,我们可以有哪些期待?

在最近几个月里&#xff0c;加密市场整体表现平稳&#xff0c;无论是比特币还是山寨币板块&#xff0c;都处于震荡状态&#xff0c;并未显示出突破前高的迹象。然而&#xff0c;在这样的市场背景下&#xff0c;meme币却持续扛起了大旗&#xff0c;令这个看似不太熊的熊市不断引…

递归算法笔记

根据b站视频整理的 **视频地址&#xff1a;**https://www.bilibili.com/video/BV1S24y1p7iH/?spm_id_from333.788.videopod.sections&vd_source6335ddc7b30e1f4510569db5f2506f20 最常见的一个递归例子&#xff1a; 斐波那契数列&#xff1a;1&#xff0c;2&#xff0c;3…

Linux 使用xtrabackup备份MySQL数据

目录 一&#xff1a;xtrabackup 介绍二&#xff1a;实现数据备份1. 实现全备份2. 实现增量备份3. 实现差异备份4. 全备份时压缩数据5. 全备份时排除指定表不备份6. 全备份时排除指定库不备份 三&#xff1a;实现数据还原1. 全备份数据恢复流程2. 全备份压缩后的数据恢复流程3. …

神仙公司名单(长沙)

神仙公司&#xff08;长沙&#xff09; 小周末&#xff0c;继续 神仙公司系列。 长沙&#xff0c;湖南省的省会城市&#xff0c;不仅以其深厚的历史文化底蕴著称&#xff0c;同时也是一个充满活力的现代都市。 长沙的经济活力、教育资源、医疗资源、就业机会、居住环境、生活成…

python中堆的用法

Python 堆&#xff08;Headp&#xff09; Python中堆是一种基于二叉树存储的数据结构。 主要应用场景&#xff1a; 对一个序列数据的操作基于排序的操作场景&#xff0c;例如序列数据基于最大值最小值进行的操作。 堆的数据结构&#xff1a; Python 中堆是一颗平衡二叉树&am…

15分钟学Go 第2天:安装Go环境

第2天&#xff1a;安装Go环境 1. 引言 在学习Go语言之前&#xff0c;首先需要配置好本地开发环境。本节将详细介绍如何在Windows 11上安装和配置Go语言环境&#xff0c;包括安装步骤、环境变量设置、VS Code配置与测试、以及常见问题解决方案。完成这些步骤后&#xff0c;你将…

Excel:vba实现筛选出有批注的单元格

实现的效果&#xff1a;代码&#xff1a; Sub test() Dim cell As RangeRange("F3:I10000").ClearlastRow Cells(Rows.Count, "f").End(xlUp).Row MsgBox lastrow For Each cell In Range("a1:a21")If Not cell.Comment Is Nothing ThenMsgBox…

【AIGC】2024-arXiv-InstantStyle:文本到图像生成中保持风格的免费午餐

2024-arXiv-InstantStyle: Free Lunch towards Style-Preserving in Text-to-Image Generation InstantStyle&#xff1a;文本到图像生成中保持风格的免费午餐摘要1. 引言2. 相关工作2.1 文本到图像的传播模型2.2 风格化图像生成2.3 扩散模型中的注意力控制 3. 方法3.1 动机3.2…

keil中编译遇到错误“error #94-D the size of an array must be greater than zero”解决方法

这一期&#xff0c;我们来看一个在keil中编译时候遇到定义数组元素个数为0时候遇到的一个错误。 错误&#xff1a; 先看错误&#xff1a;编译提示错误“error: #94-D: the size of an array must be greater than zero” &#xff0c;意思是这个数组内元素个数不能定义为0个&…

【AIGC】解锁高效GPTs:ChatGPT-Builder中系统提示词Prompt的设计与应用

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;系统提示词系统提示词的作用与重要性系统提示词在构建GPTs中的作用结论 &#x1f4af;ChatGPT-Builder系统提示词的详细解读OpenAI为Builder编写的系统提示词系统提示词对…

R语言详解predict函数

R语言中predict函数在建立模型&#xff0c;研究关系时常用。但是不同type得到的结果常常被混为一谈&#xff0c;接下来&#xff0c;探讨predict得到的不同结果。 #数据 set.seed(123) n<-1000 age<-rnorm(n,mean50,sd10) gender<-rbinom(n,1,0.5) disease<-rbinom…

OpenCV高级图形用户界面(12)用于更改指定窗口的大小函数resizeWindow()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::resizeWindow() 函数用于更改指定窗口的大小。这使得你可以根据需要调整窗口的宽度和高度。 注释 指定的窗口大小是指图像区域的大小。工具栏…

Maxwell 底层原理 详解

Maxwell 是一个 MySQL 数据库的增量数据捕获&#xff08;CDC, Change Data Capture&#xff09;工具&#xff0c;它通过读取 MySQL 的 binlog&#xff08;Binary Log&#xff09;来捕获数据变化&#xff0c;并将这些变化实时地发送到如 Kafka、Kinesis、RabbitMQ 或其他输出端。…

字节跳动青训营——入营考核解答(持续更新中~~~)

考核内容&#xff1a; 在指定的题库中自主选择不少于 15 道算法题并完成解题&#xff0c;其中题目难度分配如下&#xff1a; 简单题不少于 10 道中等题不少于 4 道困难题不少于 1 道 解答代码 20. 百分位数&#xff08;中等&#xff09; 代码实现&#xff1a; import jav…

Uiautomator2与weditor配置一直报错咋办

作者在配置这两个的时候绞尽脑汁了&#xff0c;u2的init总是报错并且无法自动在手机上安装atx&#xff0c;weditor可以打开但是只要对元素操作或者任意操作就会让你去重新init&#xff0c;搞得作者焦头烂额&#xff0c;而且网上各种各样的报错信息眼花缭乱&#xff0c;作者几乎…

【深入学习Redis丨第八篇】详解Redis数据持久化机制

前言 Redis支持两种数据持久化方式&#xff1a;RDB方式和AOF方式。前者会根据配置的规则定时将内存中的数据持久化到硬盘上&#xff0c;后者则是在每次执行写命令之后将命令记录下来。两种持久化方式可以单独使用&#xff0c;但是通常会将两者结合使用。 一、持久化 1.1、什么…

基于neo4j知识图谱的菜谱推荐系统

&#x1f374; AI菜谱推荐系统让你“煮”事半功倍&#xff01; &#x1f374; 找不到做饭灵感的时候&#xff0c;是不是总觉得“今天吃啥”这道选择题简直是终极挑战&#xff1f;别急&#xff0c;我们基于Neo4j知识图谱的菜谱推荐系统&#xff0c;正是为了解决你的困扰而设计&a…