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

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

相关推荐
星野川崎20611 小时前
电商多店运维:云机长期挂机频繁掉线、账号无故风控原因剖析与解决方案
大数据·运维·云计算·电商
AKAMAI16 小时前
Akamai Cloud Pulse 审计日志现已全面开放使用
人工智能·云计算
刘梦薇19 小时前
SSH连接失败connection reset解决办法
linux·运维·ubuntu·ssh·腾讯云
workflower20 小时前
智能无人机成低空经济核心赛道
运维·人工智能·机器学习·机器人·云计算·无人机
运维全栈笔记1 天前
腾讯云 CVM 搭建 Ceph 集群部署笔记
笔记·ceph·腾讯云
海兰1 天前
【AI工具】腾讯云开源自研 AI 助手 Octop介绍及安装使用指南
人工智能·云计算·腾讯云
谷哥的小弟2 天前
腾讯云服务器安装Redis Stack图文教程
服务器·redis·腾讯云·redis stack
天疆说2 天前
02 API 鉴权与腾讯云公网桥接:把局域网模型服务安全地挂到域名上
安全·云计算·腾讯云
张3蜂3 天前
ALB、NLB、GWLB、CLB怎么选?
阿里云·云计算
SaaS_Product3 天前
在线文件收集工具推荐?几种常见的批量文件收集方法
人工智能·云计算·saas·onedrive