Brc's blog
首页
前端
后端
运维
  • 工作笔记
  • 分类
  • 标签
  • 归档
关于

Brc

努力中
首页
前端
后端
运维
  • 工作笔记
  • 分类
  • 标签
  • 归档
关于
  • 工具安装

  • AWS

  • EKS

  • 其他

    • certbot
    • 先删除运行时间长的pod
    • jenkins
    • JFrogArtifactory
    • AWS防ddos的架构
    • 七牛云数据迁移
      • 新账号准备工作
        • 开启密钥
      • 迁移脚本
      • 新账号操作
        • 创建存储空间
        • 自定义源站域名
      • aws操作
        • aws创建cloudfront
      • 执行迁移脚本
        • 第一次全量
        • 后面定时增量
      • 迁移完成后操作
        • 检查
        • 后端修改
        • 前端修改
        • 运维修改(和后端一起)
    • Ubuntu安装gnome配置rdp
    • ElastiCacheForRedis启用密码
  • AWS创建EKS集群
  • 谷歌云创建GKE集群
  • 工作笔记
  • 其他
Brc
2023-06-11
目录

七牛云数据迁移

# 准备工作

# 新账号准备工作

# 开启密钥

个人中心->密钥管理->创建密钥

# 迁移脚本

from qiniu import Auth
from qiniu import BucketManager
from qiniu import Auth, PersistentFop, urlsafe_base64_encode
import datetime

#access_key,secret_key在个人面板的密钥管理处获得,非个人账号密码
src_access_key = "wxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxf"
src_secret_key = "wxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxg"
src_bucket_name = 'birenchong'
src_q = Auth(src_access_key, src_secret_key)
src_bucket = BucketManager(src_q)

access_key = "7xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxI"
secret_key = "2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxR"
bucket_name = 'birenchong'
q = Auth(access_key, secret_key)
bucket = BucketManager(q)


# 抓取镜像源文件到空间
def sync_mirror(key, bucket, bucket_name):
    bucket = bucket
    # 要拉取的文件名
    key = key
    ret, info = bucket.prefetch(bucket_name, key)
    # print(info)
    return info
    # assert ret['key'] == key


# 列出文件
def file_items(marker, bucket, bucket_name):
    bucket = bucket
    # 前缀
    prefix = None
    # prefix = "image"
    # 列举条目
    limit = 1000
    # 列举出除'/'的所有文件以及以'/'为分隔的所有前缀
    delimiter = None
    # 标记
    # marker = None
    marker = marker
    ret, eof, info = bucket.list(bucket_name, prefix, marker, limit, delimiter)
    # assert len(ret.get('items')) is not None
    a = {"ret": ret, "eof": eof}
    return a


def select_flie(key, bucket, bucket_name):
    #获取文件的状态信息
    ret, info = bucket.stat(bucket_name, key)
    return True if ret != None else False


#对已经上传到七牛的图片发起异步缩略操作
def file_compress(key, q, bucket_name):
    #要缩略的文件所在的空间和文件名。
    # key = key
    #pipeline是使用的队列名称,不设置代表不使用私有队列,使用公有队列。
    pipeline = "birenchong_queue"
    #要进行缩略的操作。
    fops = 'imageslim'
    #可以对缩略后的文件进行使用saveas参数自定义命名,当然也可以不指定文件会默认命名并保存在当前空间
    new_file_name = bucket_name + ":" + key
    saveas_key = urlsafe_base64_encode(new_file_name)
    fops = fops + '|saveas/' + saveas_key
    pfop = PersistentFop(q, bucket_name, pipeline)
    ops = []
    ops.append(fops)
    ret, info = pfop.execute(key, ops, 1)
    print(new_file_name, info.status_code)
    # assert ret['persistentId'] is not None

if __name__ == "__main__":
    marker = None
    # marker = "eyJjIjowLCJrxxxxxxxxxxxxxxxxxxxxxxxxTQ0OTE0NzI5MC5qcGcifQ=="
    while True:
        # for i in range(1,10):
        # 列出文件
        a = file_items(marker, src_bucket, src_bucket_name)
        eof = a.get("eof")
        ret = a.get("ret")
        marker = ret.get("marker")
        # print(marker)
        # sum = 0
        start = datetime.datetime.now()
        for y in ret.get("items"):
            # print(y.get("key"))
            # 2022-08-09 19:00:00 - 2022-08-09 20:40:00  16600428000000000-16600488000000000
            # 判断时间,上次同步时间到本次同步时间
            if y.get("putTime") > 16600608000000000:
                # 判断文件是否存在
                # file_status = select_flie(y.get("key"), bucket, bucket_name)
                # if file_status is False:
                    # print("{}--{}".format(y.get("key"),y.get("putTime")))
                # 将文件镜像同步
                data = sync_mirror(y.get("key"), bucket, bucket_name)
                print("{}--{}".format(marker, data))
                if data.status_code == 200:
                    if y.get("mimeType") == "image/jpeg" or y.get(
                        "mimeType") == "image/png":
                    # 压缩
                        file_compress(y.get("key"), q, bucket_name)
                        # sum += 1
        end = datetime.datetime.now()
        # print(sum)
        # print(end - start)
        if eof == True:
            break

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111

# 迁移方案

# 新账号操作

# 创建存储空间

对象存储->空间管理->新建空间

# 自定义源站域名

qn.birenchong.cn

# aws操作

# aws创建cloudfront

指向qn.birenchong.cn的cname

# 执行迁移脚本

# 第一次全量

# 后面定时增量

打开并修改时间限制

# 迁移完成后操作

# 检查

在新账号检查文件是否同步

# 后端修改

代码层面修改,拦截转发,修改key

birenchong
access_key = "7xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxI"
secret_key = "2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxR"
1
2
3

# 前端修改

各端将birenchong.birenchong.com替换成qn.birenchong.cn

crm修改php指定的key和空间地址

APP_QINIU_URL=https://qn.birenchong.cn

QINIU_ACCESS_KEY=7xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxI
QINIU_SECRET_KEY=2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxR

QINIU_VIDEO_BUCKET_NAME=birenchong

QINIU_VIDEO_CHAT_ROOM_BUCKET_NAME=birenchong
VIDEO_CHAT_ROOM_IMG_BASE_URL=https://qn.birenchong.cn/
1
2
3
4
5
6
7
8
9

# 运维修改(和后端一起)

将原来的存储空间做一个镜像回源

主路线

https://qn.birenchong.cn
1

URL参数:不保留

#七牛
Last Updated: 2023/11/08, 14:45:54
AWS防ddos的架构
Ubuntu安装gnome配置rdp

← AWS防ddos的架构 Ubuntu安装gnome配置rdp→

最近更新
01
谷歌云创建GKE集群
07-26
02
ElastiCacheForRedis启用密码
07-26
03
upload-to-gcs
06-29
更多文章>
Theme by Vdoing | Copyright © 2021-2024 Brc | MIT License | 浙ICP备19031881号-4
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式