腾讯云使用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即可迁移

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

相关推荐
Sheffield14 小时前
command和shell模块到底区别在哪?
linux·云计算·ansible
DolitD19 小时前
云流技术深度剖析:国内云渲染主流技术与开源和海外厂商技术实测对比
功能测试·云原生·开源·云计算·实时云渲染
翼龙云_cloud19 小时前
阿里云渠道商:阿里云 ECS 从安全组到云防火墙的实战防护指南
安全·阿里云·云计算
YongCheng_Liang19 小时前
从零开始学虚拟化:桌面虚拟化(VDI)入门指南(架构 + 产品 + 部署)
运维·云计算
万物得其道者成20 小时前
阿里云 H5 一键登录接入实战:前后端完整实现
阿里云·云计算·状态模式
翼龙云_cloud1 天前
国际云代理商:2026年国际云注册风控升级实战指南 8 大平台无卡解决方案对比
服务器·阿里云·云计算
阿里云大数据AI技术2 天前
全模态、多引擎、一体化,阿里云DLF3.0构建Data+AI驱动的智能湖仓平台
人工智能·阿里云·云计算
摇滚侠2 天前
阿里云安装的 Redis 在什么位置,如何找到 Redis 的安装位置
redis·阿里云·云计算
m0_694845572 天前
tinylisp 是什么?超轻量 Lisp 解释器编译与运行教程
服务器·开发语言·云计算·github·lisp
ESBK20252 天前
第四届移动互联网、云计算与信息安全国际会议(MICCIS 2026)二轮征稿启动,诚邀全球学者共赴学术盛宴
大数据·网络·物联网·网络安全·云计算·密码学·信息与通信