腾讯云使用coscli工具传输数据

参考腾讯云官方文档:https://cloud.tencent.com/document/product/436/63144

第一步:下载coscli工具

Linux-386:wget https://cosbrowser.cloud.tencent.com/software/coscli/coscli-linux-386

Linux-amd64:wget https://cosbrowser.cloud.tencent.com/software/coscli/coscli-linux-amd64

Linux-arm:wget https://cosbrowser.cloud.tencent.com/software/coscli/coscli-linux-arm

Linux-arm64:wget https://cosbrowser.cloud.tencent.com/software/coscli/coscli-linux-arm64

第二步 安装工具

mv coscli-linux-amd64 coscli

chmod 755 coscli

查看版本

./coscli --version

第三步 ,配置

初次使用时,COSCLI 会自动调用 ./coscli config init 在 ~/.cos.yaml 位置生成配置文件,您可以在命令行交互式的完成配置。后续您也可以使用 ./coscli config init 命令在其他位置为 COSCLI 交互式地生成配置文件。您可以使用./coscli config show来查看配置文件的所在位置和配置参数信息。

迁移脚本,例如

bash 复制代码
cat cos_upload_test.sh


#!/bin/bash

# 获取当前日期
CURRENT_DATE=$(date +'%Y-%m-%d')

# 本地文件夹路径(根据日期动态生成)
LOCAL_DIR="/ddt/fs/recordings/$CURRENT_DATE"
echo "Local directory: $LOCAL_DIR"

# 腾讯云COS的目标路径(不包括Bucket名,因为coscli命令会指定Bucket)
COS_BUCKET="prod-13*****7290"
COS_TARGET_DIR="cos://${COS_BUCKET}/ddt/fs/recordings/$CURRENT_DATE/"

# coscli命令的路径(如果coscli在PATH中,则可以直接使用coscli)
COSCLI="/root/downloads/coscli/coscli"

# 设置并发上传的数量
JOBS=10

# 日志目录和文件路径(加上当天日期)
LOG_DIR="/var/log/coscli"
LOG_FILE="$LOG_DIR/$CURRENT_DATE.log"

# 确保日志目录存在
mkdir -p "$LOG_DIR"

# 查找的时间范围
MINUTES_AGO_1200=$(date -d '1200 minutes ago' +'%Y-%m-%d %H:%M:%S')
FIVE_MINUTES_AGO=$(date -d '5 minutes ago' +'%Y-%m-%d %H:%M:%S')

# 无限循环,保持后台运行
while true; do
    # 查找本地文件夹中在过去1200分钟内新增或修改的文件,并且修改时间是5分钟之前的文件
    FILES=$(find "$LOCAL_DIR" -type f -newermt "$MINUTES_AGO_1200" ! -newermt "$FIVE_MINUTES_AGO")

    if [ -z "$FILES" ]; then
        echo "$(date '+%Y-%m-%d %H:%M:%S') - No files found within the specified time range." >> $LOG_FILE
    else
        echo "$(date '+%Y-%m-%d %H:%M:%S') - Found files within the specified time range:" >> $LOG_FILE
        echo "$FILES" >> $LOG_FILE
    fi

    # 清理临时文件列表
    > /tmp/upload_list.txt

    # 遍历找到的文件
    for FILE in $FILES; do
        # 获取文件的相对路径(相对于LOCAL_DIR)
        RELATIVE_PATH="${FILE#$LOCAL_DIR/}"

        # 构造COS的目标路径
        COS_PATH="${COS_TARGET_DIR}${RELATIVE_PATH}"

        # 获取文件的最后修改时间
        MOD_TIME=$(stat -c %Y "$FILE")  # 获取最后修改时间(以秒为单位)
        MOD_TIME_HUMAN=$(date -d @$MOD_TIME +"%Y-%m-%d %H:%M:%S")  # 将时间转换为人类可读格式

        echo "$(date '+%Y-%m-%d %H:%M:%S') - Local file: $FILE" >> $LOG_FILE
        echo "$(date '+%Y-%m-%d %H:%M:%S') - Last modified time: $MOD_TIME_HUMAN" >> $LOG_FILE
        echo "$(date '+%Y-%m-%d %H:%M:%S') - COS path: $COS_PATH" >> $LOG_FILE

        # 检查文件内容是否不为空
        if [ -s "$FILE" ]; then
            # 将文件路径和目标路径写入临时文件
            echo "$FILE $COS_PATH" >> /tmp/upload_list.txt
        else
            echo "$(date '+%Y-%m-%d %H:%M:%S') - File $FILE is empty, skipping." >> $LOG_FILE
        fi
    done

    # 使用 xargs 并发上传文件
    if [ -f /tmp/upload_list.txt ]; then
        cat /tmp/upload_list.txt | xargs -P $JOBS -n 2 bash -c '
            FILE=$1
            COS_PATH=$2
            LOG_FILE=$3
            COSCLI=$4
            if "$COSCLI" cp "$FILE" "$COS_PATH" >> "$LOG_FILE" 2>&1; then
                echo "$(date +%Y-%m-%d\ %H:%M:%S) - Uploaded and deleted: $FILE" >> "$LOG_FILE"
                rm -f "$FILE"
            else
                echo "$(date +%Y-%m-%d\ %H:%M:%S) - Failed to upload: $FILE" >> "$LOG_FILE"
            fi
        ' _ "$COSCLI" "$LOG_FILE"
    fi

    # 清理临时文件
    rm -f /tmp/upload_list.txt

    # 休眠一段时间(例如60秒),避免频繁检查文件系统
    sleep 15
done

执行脚本./cos_upload_test.sh即可迁移

查看迁移日志,成功失败记录

相关推荐
昂亢伏特卜6 小时前
使用AWS免费EC2自建RustDesk远程桌面连接服务
云计算·aws
Johny_Zhao7 小时前
阿里云平台健康检查巡检清单-运维篇
linux·网络安全·阿里云·信息安全·云计算·shell·系统运维
数智前线10 小时前
谁在托举Agent?阿里云抢滩Agent Infra新赛道
阿里云·云计算
潮湿的心情10 小时前
中宇联:以“智云融合+AI”赋能全栈云MSP服务,深化阿里云生态合作
人工智能·阿里云·云计算
云布道师10 小时前
【云故事探索】NO.16:阿里云弹性计算加速精准学 AI 教育普惠落地
人工智能·阿里云·云计算
阿里云云原生10 小时前
阿里云微服务引擎 MSE 及 API 网关 2025 年 7 月产品动态
阿里云·微服务·云计算
都给我14 小时前
可计算存储(Computational Storage)与DPU(Data Processing Unit)的技术特点对比及实际应用场景分析
运维·服务器·网络·云计算
G皮T15 小时前
【云计算】云主机的亲和性策略(一):快乐旅行团
云原生·云计算·公有云·集群架构·云主机·亲和性·反亲和性
程序员瓜叔19 小时前
使用xshell连接远程腾讯云服务器,报错:Xshell Socket error Event: 32 Error: 10053
服务器·云计算·腾讯云
CRMEB定制开发20 小时前
腾讯云镜像+CRMEB电商系统:高可用集群部署与性能调优
腾讯云·商城系统·小程序商城·微信商城·crmeb