源码 <oss2.models.PutObjectResult object at 0x7f7928d0b240>
<oss2.models.PutObjectResult object at 0x7f7928d0b240>
# -*- coding: utf-8 -*-
import oss2
oss_key = ['LTAINInNd1ryh0gt', 's6Kta34KkwPdvvvyP1Rk8BOV1UBeUk', 'oss-cn-shenzhen-internal.aliyuncs.com']
yourAccessKeyId, yourAccessKeySecret, endpoint = oss_key
yourBucketName = 'test-archive'
# # 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
auth = oss2.Auth(yourAccessKeyId, yourAccessKeySecret)
# # Endpoint以杭州为例,其它Region请按实际情况填写。
bucket = oss2.Bucket(auth, endpoint, yourBucketName) import sys, glob, os kind, dir_, ip = sys.argv[1], sys.argv[2], sys.argv[3] file_feature = '*-*-*'
dir_ = dir_ + file_feature
logicPath = 'log/{}/birthplaceIp{}/'.format(kind, ip)
LocalFiles = glob.glob(dir_)
for i in LocalFiles:
print(i)
ii = i.split(os.sep)[-1]
objectName = '{}{}'.format(logicPath, ii)
r = bucket.put_object_from_file(objectName, i)
print(r)
【2018年12月29日 09:45:56,xiaole】
1、数据说明
备份2类文件:云盟广告数据源原始文件、广告详情页访客数据源原始文件,依次
备份在test-archive/testlog/{yunmeng,detailPage}/逻辑目录;
1-1、逻辑目录
原始文件所在的公网ip地址
59.120.16.204,
59.120.11.14,
101.21.46.230,
,相应建立逻辑目录,例如test-archive/testlog/{yunmeng,detailPage}/birthplaceIp59.110.16.204;
1-2、数据大小
相应1-1中ip顺序2类文件大小:
132、18,
95、15,
132、18,
单位G,日期为2018-09-18至今日,
示例:
[root@a ~]# ll -ash /data/uniontestlog/
total 132G
20K drwxr-xr-x 2 nginx nginx 20K Dec 29 00:00 .
4.0K drwxr-xr-x 14 root root 4.0K Dec 10 11:00 ..
963M -rw-r--r-- 1 nginx nginx 963M Sep 18 23:59 visit-2018-09-18
1.3G -rw-r--r-- 1 nginx nginx 1.3G Sep 19 23:59 visit-2018-09-19
1.2G -rw-r--r-- 1 nginx nginx 1.2G Sep 20 23:59 visit-2018-09-20
[root@a ~]# ll -ash /data/visittestlog/
total 18G
20K drwxr-xr-x 2 nginx nginx 20K Dec 29 00:00 .
4.0K drwxr-xr-x 14 root root 4.0K Dec 10 11:00 ..
48M -rw-r--r-- 1 nginx nginx 48M Sep 18 23:59 visit-2018-09-18
66M -rw-r--r-- 1 nginx nginx 66M Sep 19 23:59 visit-2018-09-19
64M -rw-r--r-- 1 nginx nginx 64M Sep 20 23:59 visit-2018-09-20
68M -rw-r--r-- 1 nginx nginx 68M Sep 21 23:59 visit-2018-09-21
单日文件,大小实时递增;
2、费用相关
2-1、存储类型选择
参考
2-1、阿里云存储类型选择说明
存储类型介绍_存储类型_开发指南_对象存储 OSS-阿里云 https://help.aliyun.com/document_detail/51374.html?spm=a2c4g.11186623.2.13.75a465d3dgp2Sb#concept-fcn-3xt-tdb
归档存储类型(Archive)
OSS归档存储类型在三种存储类型中单价最低,适合需要长期保存(建议半年以上)的归档数据,在存储周期内极少被访问,数据进入到可读取状态需要1分钟的解冻时间。
选择
归档存储类型(Archive);
2-2、费用计算
参考
计费案例_计费方式_计量计费_对象存储 OSS-阿里云 https://help.aliyun.com/document_detail/48293.html?spm=a2c4g.11186623.6.556.32901751otd0Eh
存储费用:0.148(存储单价:元/GB/月) * 1024(存储量:GB) = 151.55 元/月
流量费用:0.5(外网流出流量忙时单价:元/GB)* 2048 (流量:GB) = 1024 元/月
请求费用:0.01(请求费用单价:元/万次)* 1500 = 15 元/月
总费用:1190.55 元/月
本存储中,1024GB月oss费用总计约150元;
2-3、存储区域
华南(1)深圳
3、维护相关
3-1、数据写入
3-1-1、视情况追加新日期的数据,注意追加时要覆盖oss中最晚的文件;
3-1-2、视情况删除;
3-2、数据读取
尽量通过阿里内网访问;
py36\Lib\site-packages\oss2\api.py
def put_object_from_file(self, key, filename,
headers=None,
progress_callback=None):
"""上传一个本地文件到OSS的普通文件。
:param str key: 上传到OSS的文件名
:param str filename: 本地文件名,需要有可读权限
:param headers: 用户指定的HTTP头部。可以指定Content-Type、Content-MD5、x-oss-meta-开头的头部等
:type headers: 可以是dict,建议是oss2.CaseInsensitiveDict
:param progress_callback: 用户指定的进度回调函数。参考 :ref:`progress_callback`
:return: :class:`PutObjectResult <oss2.models.PutObjectResult>`
"""
headers = utils.set_content_type(http.CaseInsensitiveDict(headers), filename)
with open(to_unicode(filename), 'rb') as f:
return self.put_object(key, f, headers=headers, progress_callback=progress_callback)
def put_object(self, key, data,
headers=None,
progress_callback=None):
"""上传一个普通文件。
用法 ::
>>> bucket.put_object('readme.txt', 'content of readme.txt')
>>> with open(u'local_file.txt', 'rb') as f:
>>> bucket.put_object('remote_file.txt', f)
:param key: 上传到OSS的文件名
:param data: 待上传的内容。
:type data: bytes,str或file-like object
:param headers: 用户指定的HTTP头部。可以指定Content-Type、Content-MD5、x-oss-meta-开头的头部等
:type headers: 可以是dict,建议是oss2.CaseInsensitiveDict
:param progress_callback: 用户指定的进度回调函数。可以用来实现进度条等功能。参考 :ref:`progress_callback` 。
:return: :class:`PutObjectResult <oss2.models.PutObjectResult>`
"""
headers = utils.set_content_type(http.CaseInsensitiveDict(headers), key)
if progress_callback:
data = utils.make_progress_adapter(data, progress_callback)
if self.enable_crc:
data = utils.make_crc_adapter(data)
resp = self.__do_object('PUT', key, data=data, headers=headers)
result = PutObjectResult(resp)
if self.enable_crc and result.crc is not None:
utils.check_crc('put', data.crc, result.crc)
return result
py36\Lib\site-packages\oss2\models.py
class PutObjectResult(RequestResult):
def __init__(self, resp):
super(PutObjectResult, self).__init__(resp)
#: HTTP ETag
self.etag = _get_etag(self.headers)
#: 文件上传后,OSS上文件的CRC64值
self.crc = _hget(resp.headers, 'x-oss-hash-crc64ecma', int)
源码 <oss2.models.PutObjectResult object at 0x7f7928d0b240>的更多相关文章
- JDK1.8源码阅读笔记(1)Object类
JDK1.8源码阅读笔记(1)Object类 Object 类属于 java.lang 包,此包下的所有类在使⽤时⽆需⼿动导⼊,系统会在程序编译期间⾃动 导⼊.Object 类是所有类的基类,当⼀ ...
- JDK1.8源码(一)——java.lang.Object类
本系列博客将对JDK1.8版本的相关类从源码层次进行介绍,JDK8的下载地址. 首先介绍JDK中所有类的基类——java.lang.Object. Object 类属于 java.lang 包,此包下 ...
- JVM源码分析之深入分析Object类finalize()方法的实现原理
原创申明:本文由公众号[猿灯塔]原创,转载请说明出处标注 “365篇原创计划”第十篇. 今天呢!灯塔君跟大家讲: 深入分析Object类finalize()方法的实现原理 finalize 如果 ...
- JDK源码学习笔记——Object
一.源码解析 public class Object { /** * 一个本地方法,具体是用C(C++)在DLL中实现的,然后通过JNI调用 */ private static native void ...
- Django-rest-framework源码分析----认证
一.前言 1.1.安装 两种方式: github pip直接安装 pip install django-rest-framework 1.2.需要先了解的一些知识 理解下面两个知识点非常重要,djan ...
- Django rest framework源码分析(1)----认证
目录 Django rest framework(1)----认证 Django rest framework(2)----权限 Django rest framework(3)----节流 Djan ...
- Django rest framework 源码分析 (1)----认证
一.基础 django 2.0官方文档 https://docs.djangoproject.com/en/2.0/ 安装 pip3 install djangorestframework 假如我们想 ...
- Django的rest_framework认证组件之局部设置源码解析
前言: Django的rest_framework组件的功能很强大,今天来我来给大家剖析一下认证组件 下面进入正文分析,我们从视图开始,一步一步来剖析认证组件 1.进入urls文件 url(r'^lo ...
- Django Rest Framework源码剖析(一)-----认证
一.简介 Django REST Framework(简称DRF),是一个用于构建Web API的强大且灵活的工具包. 先说说REST:REST是一种Web API设计标准,是目前比较成熟的一套互联网 ...
随机推荐
- Netty权威指南之Netty入门程序
package com.hjp.netty.netty; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.Chan ...
- The import XXX cannot be resolved
选择project --> clean后,OK.如果还不行,删掉全部import,然后按alt+/提示,逐个导入.
- Ansible 安装和管理服务
ansible 使用 yum 模块来安装软件包,使用 service 模块来启动软件: [root@localhost ~]$ ansible 192.168.119.134 -m yum -a &q ...
- AESDK开发之UI消息响应
UI创建: 在该入口下 case PF_Cmd_PARAMS_SETUP: //.... break; 必须在末尾指定UI数目,UI数目一般是枚举,如果和枚举长度不一致也会报错.所以最好是直接修改枚举 ...
- iOS - UIScrollView 相关属性代理详解
一.UIScrollView的属性和代理方法详解 属性: - (void)viewDidLoad { [super viewDidLoad]; _scrollView.backgroundColor ...
- Visual C++中去除警告
在编程中,编译器警告的意思是提问程序员:如果这样做将会出现意外的错误,你确定要这样做吗? 在很多情况下,我们写程序的时候会出现一些警告,而这些警告我们都知道这样做的确是需要的并且程序中多处出现这种做法 ...
- 【python3】 django2.0 在生成数据库表时报错: TypeError: __init__() missing 1 required positional argument: 'on_delete'
python: 3.6.4 django: 2.0 models.py 代码如下 # coding: utf-8 from django.db import models from django.co ...
- Git学习之Git恢复进度
================================================ 继续暂存区未完成的实践 ======================================= ...
- Linux(Ubuntu) 下如何解压 .tar.gz 文件
在终端输入以下命令即可解压: tar -zxvf YOUR_FILE_NAME.tar.gz 如果出现“权限不够”的错误提示,在命令前加上 sudo ,即 sudo tar -zxvf YOUR_FI ...
- CacheDependency 的使用方法
//创建缓存依赖项 CacheDependency dep = new CacheDependency(fileName); //创建缓存 HttpContext.Current.Cache.Inse ...