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

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

相关推荐
GreatNXY4 分钟前
【阿里云】阿里云 Ubuntu 服务器无法更新 systemd(Operation not permitted)的解决方法
服务器·阿里云·云计算
Lw老王要学习2 小时前
Linux架构篇、第五章git2.49.0部署与使用
linux·运维·git·云计算·it
亚林瓜子12 小时前
AWS EC2源代码安装valkey命令行客户端
redis·云计算·aws·cli·valkey
Johny_Zhao14 小时前
K8S+nginx+MYSQL+TOMCAT高可用架构企业自建网站
linux·网络·mysql·nginx·网络安全·信息安全·tomcat·云计算·shell·yum源·系统运维·itsm
大G哥21 小时前
实战演练:用 AWS Lambda 和 API Gateway 构建你的第一个 Serverless API
云原生·serverless·云计算·gateway·aws
weixin_307779131 天前
使用FastAPI微服务在AWS EKS中构建上下文增强型AI问答系统
人工智能·python·云计算·fastapi·aws
是垚不是土2 天前
Kolla-Ansible搭建与扩容OpenStack私有云平台
linux·运维·服务器·云计算·ansible·openstack
同聘云2 天前
阿里云ddos云防护服务器有哪些功能?ddos防御手段有哪些??
服务器·阿里云·云计算·ddos
鸡鸭扣2 天前
DRF/Django+Vue项目线上部署:腾讯云+Centos7.6(github的SSH认证)
前端·vue.js·python·django·腾讯云·drf
Cloud Traveler2 天前
云计算中的虚拟化:成本节省、可扩展性与灾难恢复的完美结合
云计算