国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

記一次 OSS 大批量文件下載的實(shí)現(xiàn) → bat腳本不好玩!

這篇具有很好參考價(jià)值的文章主要介紹了記一次 OSS 大批量文件下載的實(shí)現(xiàn) → bat腳本不好玩!。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

開心一刻

  一天夜里,侄女跟我哥聊天

  侄女一臉期待的看著我哥:爸爸,你說(shuō)媽媽和奶奶誰(shuí)漂亮???

  我哥不慌不忙的拿起一粒瓜子,輕聲說(shuō)道:為啥沒(méi)有你???

  侄女笑容漸起,似乎得到了她想要的回答,仍繼續(xù)問(wèn)道:那媽媽和奶奶還有我,誰(shuí)漂亮?

  我哥瞄了一眼侄女,又拿起一粒瓜子堅(jiān)定的說(shuō)到:奶奶!

  侄女笑臉?biāo)查g一拉,死死地盯著我哥,幽怨地問(wèn)道:那里為啥要加我呀?

  我哥再次瞄了一眼侄女,繼續(xù)剝著瓜子說(shuō)到:我不想讓你媽媽墊底!

  侄女斜眼瞟向我哥,臉上寫滿了憤怒

記一次 OSS 大批量文件下載的實(shí)現(xiàn) → bat腳本不好玩!

  一旁的我,肚子笑疼了!

背景需求

  背景

  項(xiàng)目基于?SpringBoot?,采用?B/S?模式

  主要功能是生成文件,然后將文件上傳都?OSS?

  目前通過(guò)瀏覽器可以下載少量文件,但一旦文件過(guò)多或文件過(guò)大(總體來(lái)說(shuō)就是過(guò)大),瀏覽器下載會(huì)很慢,極其容易超時(shí)而失敗

  需求

  而最近頻繁接到產(chǎn)品那邊的反饋,說(shuō)是要下載最近幾個(gè)月,甚至兩三年的某些文件

  總之就是要支持大批量文件的下載

大批量下載實(shí)現(xiàn)

  既然業(yè)務(wù)部門發(fā)話了,作為支撐部門,必須得全力以赴,那就整唄

  阿里云oss提供了三種下載文件的方式:簡(jiǎn)單下載、斷點(diǎn)續(xù)傳下載、授權(quán)給第三方下載

  我們只看簡(jiǎn)單下載,其他兩種方式大家自行去了解

  簡(jiǎn)單下載方式也分好幾種,我們一個(gè)個(gè)來(lái)看

  OSS控制臺(tái)

  OSS控制臺(tái)指的就是

記一次 OSS 大批量文件下載的實(shí)現(xiàn) → bat腳本不好玩!

  然后按照如下步驟進(jìn)行文件下載

記一次 OSS 大批量文件下載的實(shí)現(xiàn) → bat腳本不好玩!

  但有2點(diǎn)需要注意

  1、不支持通過(guò)OSS控制臺(tái)下載文件夾(包含子目錄)

    如果需要下載文件夾(包含子目錄),您可以使用ossbrowser、ossutil、SDK、API等方式進(jìn)行下載

  2、通過(guò)OSS控制臺(tái)可一次批量下載最多100個(gè)文件

    最多只能下載100個(gè)文件,多不了一點(diǎn)

  很顯然這種方式不合適

  1、文件上傳到OSS的路徑規(guī)則導(dǎo)致每個(gè)文件都在不同的文件夾下,結(jié)果就是只能一個(gè)一個(gè)文件下載

    效率太低,誰(shuí)操作誰(shuí)得罵娘

  2、批量下載的文件數(shù)據(jù)很容易超過(guò)100

  圖形化管理工具ossbrowser

  關(guān)于?ossbrowser?不做過(guò)多介紹,大家直接查閱官網(wǎng)即可:圖形化管理工具ossbrowser

  簡(jiǎn)單點(diǎn)來(lái)說(shuō),?ossbrowser?就是?OSS控制臺(tái)?的 C 端

記一次 OSS 大批量文件下載的實(shí)現(xiàn) → bat腳本不好玩!

  所以也不合適,不合適點(diǎn)和?OSS控制臺(tái)?方式一樣

  阿里云SDK

  目前已實(shí)現(xiàn)的少量文件的下載,就是通過(guò)此種方式實(shí)現(xiàn)的

  產(chǎn)品通過(guò)瀏覽器請(qǐng)求后端,后端通過(guò)?阿里云SDK?將文件下載到后端服務(wù)器,下載完成之后進(jìn)行打包,最后將打包文件以流的方式通過(guò)瀏覽器保存到產(chǎn)品電腦的指定文件夾下

  一旦打包文件很大,通過(guò)瀏覽器就很容易超時(shí)失敗

  那就不通過(guò)瀏覽器唄,后端將打包文件上傳到指定的FTP服務(wù)器的指定目錄下,然后產(chǎn)品去FTP服務(wù)器上的指定目錄下拿打包文件

  看似可行,但還是有一些不容忽視的不足

  1、需要一臺(tái)FTP服務(wù)器,而且需要對(duì)這臺(tái)FTP服務(wù)器進(jìn)行維護(hù)

  2、產(chǎn)品需要從FTP拿打包文件,如果打包文件很大,這個(gè)復(fù)制過(guò)程也很費(fèi)時(shí)

  所以這種方式也不是很合適

  命令行工具ossutil

  關(guān)于?ossutil?,命令行工具ossutil已經(jīng)講的很詳細(xì)了

  使用?ossutil?之前,需要先配置它,大家按照配置ossutil配置即可

  需要強(qiáng)調(diào)的一點(diǎn)是,如果僅僅只是下載,那么配置的時(shí)候用?bucket?的只讀賬號(hào)即可

  本次下載只用到了ls、cp兩個(gè)命令,我們來(lái)看下這兩個(gè)命令的使用

  ?ossutil64 ls oss://qsl-yzb-test/UserData/9088/20230920?

記一次 OSS 大批量文件下載的實(shí)現(xiàn) → bat腳本不好玩!

  ?ossutil64 cp oss://qsl-yzb-test/UserData/9088/20230920/Snipaste_2023-09-25_16-24-39.png D:\qsl-yzb-test\20230920\?

記一次 OSS 大批量文件下載的實(shí)現(xiàn) → bat腳本不好玩!

  我們發(fā)現(xiàn),文件已經(jīng)下載到?D:\qsl-yzb-test\20230920?目錄下

記一次 OSS 大批量文件下載的實(shí)現(xiàn) → bat腳本不好玩!

  感覺(jué)跟需求很吻合,如果能從單個(gè)下載改成批量下載,那么需求就實(shí)現(xiàn)了

  一次輸入一個(gè)?CMD?命令,顯然是不行的,需要以?bat?腳本的方式實(shí)現(xiàn)多命令的執(zhí)行,完成文件的下載

  假設(shè)我們要下載?1011、9088、9999?這三個(gè)資源202308、202309兩個(gè)月的文件,?bat?腳本該如何寫?

  我們用兩個(gè)配置文件來(lái)配置資源和月份,類似如下

記一次 OSS 大批量文件下載的實(shí)現(xiàn) → bat腳本不好玩!

  ?bat?的?for?很強(qiáng)大,尤其以?for /f?最強(qiáng),格式如下

記一次 OSS 大批量文件下載的實(shí)現(xiàn) → bat腳本不好玩!

  分別對(duì)應(yīng)文件、字符串、命令

  我們先用?for /f?來(lái)讀取兩個(gè)配置文件

記一次 OSS 大批量文件下載的實(shí)現(xiàn) → bat腳本不好玩!

  執(zhí)行結(jié)果如下

記一次 OSS 大批量文件下載的實(shí)現(xiàn) → bat腳本不好玩!

  有 2 點(diǎn)需要注意

  1、?cmd?下,變量用一個(gè) % 來(lái)表示,比如 %r,示例:

記一次 OSS 大批量文件下載的實(shí)現(xiàn) → bat腳本不好玩!

  ? ? 但是批處理(bat腳本)時(shí),變量需要 %% 來(lái)表示,比如 %%r

  2、for命令的形式變量只能是26個(gè)字母中的任意一個(gè),同時(shí)區(qū)分大小寫

  配置文件的解析已經(jīng)實(shí)現(xiàn),接下來(lái)需要結(jié)合?ossutil?的命令來(lái)實(shí)現(xiàn)文件的下載了

  一步一步來(lái),我們先結(jié)合?ossutil?的 ls 命令獲取文件列表

  ?ossutil64 ls oss://qsl-yzb-test/UserData/9999/202309?結(jié)果如下

記一次 OSS 大批量文件下載的實(shí)現(xiàn) → bat腳本不好玩!

  我們關(guān)注的其實(shí)只是?ObjectName?那一列,而?for /f?正好能實(shí)現(xiàn)

  ?for /f "tokens=8 delims= " %p in ('ossutil64 ls oss://qsl-yzb-test/UserData/9999/202309') do echo %p?

  效果如下

記一次 OSS 大批量文件下載的實(shí)現(xiàn) → bat腳本不好玩!

  ?delims=符號(hào)列表?:以指定符號(hào)列表對(duì)字符串進(jìn)行切割,如果沒(méi)有指定?delims?,那么默認(rèn)則以空格鍵或跳格鍵作為分隔符號(hào)

    ?for /f "delims= "?和?for /f?是一樣的效果

  ?tokens=n?:定點(diǎn)提取第 n 個(gè)字符串

    ?tokens?后可以接多個(gè)數(shù)字,以逗號(hào)隔開,例如:?tokens=2,5,8?

  ?delims?進(jìn)行切割,?tokens?獲取切割后指定位置的字符串

  放進(jìn)?bat?腳本

記一次 OSS 大批量文件下載的實(shí)現(xiàn) → bat腳本不好玩!

  執(zhí)行結(jié)果如下

記一次 OSS 大批量文件下載的實(shí)現(xiàn) → bat腳本不好玩!

  我們需要的是文件列表,不需要關(guān)注目錄,那如何過(guò)濾掉目錄了?

  ?ossutil?的 ls 命令正好有?--include?參數(shù)能實(shí)現(xiàn)過(guò)濾

記一次 OSS 大批量文件下載的實(shí)現(xiàn) → bat腳本不好玩!

  執(zhí)行結(jié)果如下

記一次 OSS 大批量文件下載的實(shí)現(xiàn) → bat腳本不好玩!

  oss文件路徑已經(jīng)獲取到,接下來(lái)就是結(jié)合 cp 命令進(jìn)行下載了

記一次 OSS 大批量文件下載的實(shí)現(xiàn) → bat腳本不好玩!

  執(zhí)行后,?D:\qsl-yzb-test?目錄下文件如下

記一次 OSS 大批量文件下載的實(shí)現(xiàn) → bat腳本不好玩!

  離成功還差一步之遙,需要將文件按日期進(jìn)行劃分,比如?20230921?這天的所有文件全部放到?20230921?這個(gè)目錄下

  oss文件路徑是有規(guī)則的,具體文件名的上一級(jí)目錄就是日期目錄,所以我們可以從oss路徑中截取日期目錄,?for /f?正好能實(shí)現(xiàn)

記一次 OSS 大批量文件下載的實(shí)現(xiàn) → bat腳本不好玩!

  執(zhí)行后,?D:\qsl-yzb-test?目錄內(nèi)容如下

記一次 OSS 大批量文件下載的實(shí)現(xiàn) → bat腳本不好玩!

  自此,算是大功告成了

  但如果能手動(dòng)指定下載目錄就好了(下載目錄作為 bat 參數(shù))

  這個(gè)很簡(jiǎn)單,直接上代碼

記一次 OSS 大批量文件下載的實(shí)現(xiàn) → bat腳本不好玩!

  完整腳本代碼

記一次 OSS 大批量文件下載的實(shí)現(xiàn) → bat腳本不好玩!記一次 OSS 大批量文件下載的實(shí)現(xiàn) → bat腳本不好玩!
@ECHO OFF
rem 字符編碼設(shè)置成UTF-8編碼,防止中文亂碼
chcp 65001

rem %1 下載目錄
if "%1"=="" (
    echo "請(qǐng)指定下載目錄,類似 D:\qsl-yzb-test"
    goto :eof
)

for /f %%r in (resource_config.txt) do (
    for /f %%m in (month_config.txt) do (
        for /f "tokens=8 delims= " %%p in ('ossutil64 ls oss://qsl-yzb-test/UserData/%%r/%%m --include *.*') do (
            for /f "tokens=5 delims=/" %%d in ("%%p") do (
                rem -f表示同名覆蓋
                ossutil64 cp %%p %1\%%d\ -f
            )
        )
    )
)
View Code

  REST API

  自定義要求較高的情況可以考慮這種方式,感興趣的可以去看官方說(shuō)明

總結(jié)

  1、?ossutil?提供了很多命令,實(shí)現(xiàn)需求之前可以先翻一翻官方文檔說(shuō)明

  2、?cmd?和?bat?的變量命名是有區(qū)別的,大家一定要注意

  3、?for?很強(qiáng)大,?for /f?強(qiáng)大的最突出

參考

  批處理for語(yǔ)句從入門到精通文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-745212.html

到了這里,關(guān)于記一次 OSS 大批量文件下載的實(shí)現(xiàn) → bat腳本不好玩!的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • MySQL---使用索引優(yōu)化、大批量插入數(shù)據(jù)優(yōu)化

    MySQL---使用索引優(yōu)化、大批量插入數(shù)據(jù)優(yōu)化

    1. 使用索引優(yōu)化 索引是數(shù)據(jù)庫(kù)優(yōu)化最常用也是最重要的手段之一 , 通過(guò)索引通常可以幫助用戶解決大多數(shù)的 MySQL 的性能優(yōu)化問(wèn)題: 1.1?避免索引失效應(yīng)用-全值匹配 該情況下,索引生效,執(zhí)行效率高。 1.2?避免索引失效應(yīng)用-最左前綴法則 1.3?避免索引失效應(yīng)用-其他匹配原則

    2024年02月07日
    瀏覽(24)
  • Jmeter(三十一):制造大批量的用戶數(shù)據(jù)數(shù)據(jù)

    Jmeter(三十一):制造大批量的用戶數(shù)據(jù)數(shù)據(jù)

    需求:因測(cè)試需要,要造100w用戶數(shù)據(jù),通過(guò)用戶名、手機(jī)號(hào)、密碼可新增用戶,其中用戶名和電話號(hào)碼要求100w用戶不能重復(fù) 要點(diǎn): 1、通過(guò)Bean shell Sampler實(shí)現(xiàn)用戶名和手機(jī)號(hào)的足夠隨機(jī)。 符合我們常用規(guī)則的手機(jī)號(hào):第一位為1,第二位為3-9,后面的9位為0-9即可。 phone=${_

    2024年02月10日
    瀏覽(25)
  • cesium實(shí)現(xiàn)大批量POI點(diǎn)位聚合渲染優(yōu)化方案

    cesium實(shí)現(xiàn)大批量POI點(diǎn)位聚合渲染優(yōu)化方案

    cesium目前只提供了entityCluster這個(gè)聚合類,使打點(diǎn)聚合更方便快捷的實(shí)現(xiàn),但是一般在真正做項(xiàng)目的時(shí)候,大家會(huì)經(jīng)常碰到成千上萬(wàn)個(gè)甚至幾十萬(wàn)個(gè)點(diǎn)位需要聚合打點(diǎn),那這時(shí)候你如果還是用entity去實(shí)現(xiàn)的話,怕是要被用戶按在地上瘋狂摩擦,摩擦。。。?? 我們可以通過(guò)模擬

    2024年02月09日
    瀏覽(22)
  • 如何使用python快速將大批量圖片合成為視頻?

    如何使用python快速將大批量圖片合成為視頻?

    由于CSDN大批量導(dǎo)入圖片容易出現(xiàn)亂序,本程序?qū)⒅螆D片轉(zhuǎn)為視頻,便于用視頻的方式展示文件內(nèi)容。 由于圖片名稱復(fù)雜多樣,為便于統(tǒng)一化處理,增強(qiáng)程序的通用性,使用改名程序可以降低手動(dòng)調(diào)整的復(fù)雜度。 改名之后的效果: 注意此部分的圖片大小仍需要手動(dòng)修改或輸

    2024年02月04日
    瀏覽(21)
  • 遠(yuǎn)程運(yùn)維大批量IT設(shè)備?向日葵批量部署、分組授權(quán)與安全功能解析

    遠(yuǎn)程運(yùn)維大批量IT設(shè)備?向日葵批量部署、分組授權(quán)與安全功能解析

    數(shù)字化轉(zhuǎn)型的不斷推進(jìn),給予了企業(yè)全方位的賦能,但任何發(fā)展都伴隨著成本與代價(jià),比如在數(shù)字化轉(zhuǎn)型過(guò)程中企業(yè)內(nèi)部辦公與外部業(yè)務(wù)所需的不斷增加的IT設(shè)備數(shù)量,就為日常的運(yùn)維工作提出了更大的挑戰(zhàn)。 針對(duì)企業(yè)面對(duì)海量IT設(shè)備時(shí)的運(yùn)維難、效率低、容易出錯(cuò)等問(wèn)題,

    2024年02月14日
    瀏覽(23)
  • 使用postman做接口測(cè)試傳入大批量動(dòng)態(tài)參數(shù)的方法

    使用postman做接口測(cè)試傳入大批量動(dòng)態(tài)參數(shù)的方法

    postman是一個(gè)非常好用的接口測(cè)試工具,而且功能也很強(qiáng)大,今天只簡(jiǎn)單說(shuō)一下使用postman如何對(duì)一個(gè)接口傳入大批量參數(shù)進(jìn)行測(cè)試的方法。 以我測(cè)試的平臺(tái)為例,我們的平臺(tái)是做在線教育平臺(tái)的,我模擬的場(chǎng)景是老師有一門課叫ABC,現(xiàn)在需要有1000個(gè)學(xué)生加入ABC這門課。我們不

    2024年01月23日
    瀏覽(32)
  • redis 無(wú)占用 兩種方式 清除大批量數(shù)據(jù) lua腳本

    redis存儲(chǔ)了很多無(wú)用的key,占用了大量?jī)?nèi)存,需要清除 第一種 (顆粒度較大) lua腳本,刪除某些規(guī)則的key,輸入刪除的key,返回刪除的符合規(guī)則的key的數(shù)量 弊端:顆粒度比較大,發(fā)送一個(gè)lua腳本去執(zhí)行,會(huì)占用較多時(shí)間,堵塞其他redis命令 java代碼 這樣直接刪除,因?yàn)橐?guī)則有很

    2024年04月28日
    瀏覽(24)
  • ZooKeeper+Kafka+ELK+Filebeat集群搭建實(shí)現(xiàn)大批量日志收集和展示

    ZooKeeper+Kafka+ELK+Filebeat集群搭建實(shí)現(xiàn)大批量日志收集和展示

    大致流程:將nginx 服務(wù)器(web-filebeat)的日志通過(guò)filebeat收集之后,存儲(chǔ)到緩存服務(wù)器kafka,之后logstash到kafka服務(wù)器上取出相應(yīng)日志,經(jīng)過(guò)處理后寫入到elasticsearch服務(wù)器并在kibana上展示。 一、集群環(huán)境準(zhǔn)備 二、搭建zookeeper集群 前提條件:三臺(tái)機(jī)器分別修改時(shí)區(qū)、關(guān)閉防火墻

    2024年02月04日
    瀏覽(25)
  • Python 自動(dòng)獲取大批量excel數(shù)據(jù)并填寫到網(wǎng)頁(yè)表單(pandas;selenium)

    Python 自動(dòng)獲取大批量excel數(shù)據(jù)并填寫到網(wǎng)頁(yè)表單(pandas;selenium)

    自動(dòng)獲取大批量excel數(shù)據(jù)并填寫到網(wǎng)頁(yè)表單 部分網(wǎng)頁(yè)獲取下拉列表點(diǎn)擊的方式有所差異 這個(gè)請(qǐng)根據(jù)網(wǎng)頁(yè)源碼自做選擇 一定要學(xué)會(huì)使用IPDB調(diào)試工具 太好用了?。。?! 可能需要pip update一下 看提示 很好解決 沒(méi)有報(bào)錯(cuò)最好啦 Python真是太好用了 辦公利器啊?。。。?/p>

    2024年02月12日
    瀏覽(25)
  • 大批量數(shù)據(jù)導(dǎo)出csv,平替導(dǎo)出excel性能優(yōu)化解決方案封裝工具類

    ? ? ? ? 有些業(yè)務(wù)邏輯需要在導(dǎo)出非常大量的數(shù)據(jù),幾百甚至幾千萬(wàn)的數(shù)據(jù)這個(gè)時(shí)候再導(dǎo)出excel來(lái)對(duì)于性能都不是很友好,這個(gè)時(shí)候就需要替換實(shí)現(xiàn)思路來(lái)解決這個(gè)問(wèn)題。 ? ? ? ? 本文章提供了兩種解決的方案,也是兩種從數(shù)據(jù)庫(kù)中拿取數(shù)據(jù)的方式一種是原生的jdbc一種是使用

    2024年01月16日
    瀏覽(26)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包