华为obsutil下载优化脚本

华为obs官方的命令行工具自带md5校验和断点续传,相比传统的curl和wget下载能极大程度的降低下载大文件的时候出问题的概率。然而问题在于它运行的时候每隔几个小时就可能会陷入假死状态,即网络没问题的情况下没有下载进度,本笔记介绍了我写的脚本来解决这个问题。

链接下载命令

./obsutil share-cp 链接 /sdd/Raw_data/xlyang/PL -ac=密码 -r -u -f -vmd5

AK下载命令

./obsutil config -e 下载链接 -i ID -k key #验证
./obsutil ls obs://annoroad-cloud-product/user/cache/project/XS01KF2023020222/PM-XS01KF2023020222-17/ #检查

image-20230725110255154

下载命令解释

./obsutil cp file_path local_path -r -f -u -j 3 -p 3

其中,file_path是要下载内容在服务器上的文件路径;

local_path是本地存放路径;

-r 即下载文件及文件夹,若无此参数,只下载文件;

-j -p即并发控制,两者相乘是占用的总线程数,若服务器本身资源充足希望加快传输速度可适当调高;

-u 增量复制操作参数,可简单理解为断点续传;

-f 覆盖本地文件;

-ps 每个分段下载任务的段大小,单位:字节;若出现下载不完整的情况,建议根据网速进行指定,如 -ps=1MB。

-vmd5 进行md5验证

使用下载脚本

既然每隔几个小时假死,那我每隔几个小时重启obs进程就行了。

#!/bin/bash

start_time="$(date +%s)"            # 记录脚本开始时间

while true; do                     # 无限循环
    nohup sh -c "nohup 下载命令 -r -u -j 3 -p 3 -f -vmd5 > /dev/null 2>&1 &" & # 替换成您要执行的命令
    sleep 61
    current_time="$(date +%s)"     # 获取当前时间

    # 判断脚本是否运行超过12小时
    if (( current_time - start_time > 18*60*60 )); then
        echo "Script has been running for 18 hours. Exiting."
        exit                        # 运行超过18小时,结束脚本运行,当任务下载完成后脚本也会自动暂停
    fi

    while true; do
        if pgrep -f "obs" >/dev/null; then
            echo "your_command is rebooting"
            ps -ef | grep xlyang | grep obs | grep -v grep | awk '{print $2}' | xargs kill
            sleep 3 
            nohup sh -c "nohup 下载命令 -r -u -j 3 -p 3 -f -vmd5 > /dev/null 2>&1 &" & # 替换成您要执行的命令
            sleep 3h #每三个小时重启一次obs服务
        else
            break
        fi
    done
done


还想要更多代码?不知道怎么搭建?想让别人帮忙生信分析?欢迎来我的闲鱼咨询!价格绝对全网最低

IMG_20230725_170507

文章作者: 星落
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 星落_Blog
生信笔记 服务器 生信 华为obs 脚本
喜欢就支持一下吧