python2系列 接入阿里云oss sdk 实现上传脚本,亲测

公司图片要从原有的nfs存储上迁移到oss存储上,其实阿里云提供的很多种方式,但是作为一枚运维人员很有必要学会使用ossutil工具,当然接入阿里oss的python的sdk也是很有必要的,下面我就将我写的简单的脚本样例晒一下:

#! /usr/bin/env python
#! -*- coding:utf8 -*-
""" aliyujn oss2 python sdk 上传测试测试!!"""
from __future__ import print_function
import oss2
import os,sys

# 初始化oss登录验证
auth = oss2.Auth(‘xxxxxxxxxxxx‘, ‘xxxxxxxxxxxxxxxxxx‘)

# 所有app图片bucket
imgs_bucket = oss2.Bucket(auth, ‘oss-cn-shanghai-internal.aliyuncs.com‘, ‘yijiaoyuan-img‘)

###############################
##     以上是初始化程序      ## 
##---------------------------##            
##   以下是oss bucket操作    ##
###############################

# 本地资源路径初始化
apps = (‘api.yijiaoyuan.net‘,‘passport.letiku.net‘,‘score.letiku.net‘,‘tcms.letiku.net‘,‘tcmsq.letiku.net‘,‘tiku.letiku.net‘,‘www.letiku.net‘,‘xiyizhiyeyishi.letiku.net‘,‘xiyizhulizyys.letiku.net‘,‘yijiaoyuan.letiku.net‘,‘yjy.yijiaoyuan.net‘)

uploads_dirs = [‘/www/web/‘ + ‘test.‘ + app + ‘/Uploads‘ for app in apps]
imgs_bucket_dirs = []
imgs_bucket_files = []
local_res_files= []

# 获取bucket上的文件和目录资源,因为bucket上没有文件夹的概念
def get_res_on_bucket():
	for obj in oss2.ObjectIterator(imgs_bucket,delimiter="/"):
		if obj.is_prefix():
			imgs_bucket_dirs.append(obj)
			print(‘directory:‘ + obj.key)
		else:
			print(‘file:‘ + obj.key)
			imgs_bucket_files.append(obj)

# 文件归类,获取要上传的图片的本地res的所有文件的绝对路径
def getLocalFiles(dir):
    if os.path.exists(dir):
        for res in os.listdir(dir):
            ab_dir = dir+os.sep+res
            if os.path.isfile(ab_dir):
               #if res_uri.endswith(‘.jpg‘) or res_uri.endswith(‘.png‘):
                if ab_dir.endswith(‘.jpg‘) or ab_dir.endswith(‘.png‘):
                    local_res_files.append(ab_dir)
            if os.path.isdir(ab_dir):
                getLocalFiles(ab_dir)

# 上传文件
def putFileToBucket():
    for file in local_res_files:
        # key: bucket上的名称
        key = file[file.find(‘Uploads‘):]
        result = imgs_bucket.put_object_from_file(key,file,progress_callback=percentage)
        print(result)

# 起始程序
def start(dir):
	for dir in uploads_dirs:
            getLocalFiles(dir)

# 进度条功能
def percentage(consumed_bytes, total_bytes):
	if total_bytes:
		rate = int(100* (float(consumed_bytes)) / (float(total_bytes)))
		print (‘\r{0}%‘.format(rate),end=‘‘)
		sys.stdout.flush()

if __name__ == "__main__":
	#get_res_on_bucket()
	start(uploads_dirs)
    #print(local_res_files)
    putFileToBucket()

作为一个运维人员第一次接入sdk我还是有些激动,运行结果图示如下:

 ,

其实,最近也开始在学习php程序,公司的后台就是用的php,很有必要学习php。每天学一点,然后

我也即将用php来接入这个sdk。加油,平常心学习,每天进步一点点!!

时间: 2024-12-20 01:17:01

python2系列 接入阿里云oss sdk 实现上传脚本,亲测的相关文章

PHP阿里云OSS,七牛云 上传文件

来源:http://my.oschina.net/rain21/blog/477019 七牛云 PHPSDK下载:http://pan.baidu.com/s/1o69TGcM 7.X版本: DEMO: <?php require_once './vendor/autoload.php';   use Qiniu\Auth; use Qiniu\Storage\BucketManager; use Qiniu\Storage\UploadManager;   $accessKey = 'acce

阿里云 oss 小文件上传进度显示

对阿里云OSS上传小文件时的进度,想过两个方法:一是.通过多线程监測Inputstream剩余的字节数来计算,可是由于Inputstream在两个线程中共用,假设上传线程将Inputstream关闭,在监測线程就会报"句柄无效"的错误,甚至会导致上传失败:第二个方法是通过线程不断监測OSS上已经上传文件的大小,可是在文件全然上传前是不能获得文件大小的. 最后突然灵感来了,把两个方法同一时候使用就行监測文件上传的进度. 看代码: // 上传小文件 private static void

阿里云oss,简单上传

描述:oss比较方便,省去了自己搭建文件服务器的时间,价格比较便宜,下面是java基于oss的简单上传代码 a.添加maven依赖 <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>2.1.0</version> </dependency> b.java代码 public

thinkphp集成系列之阿里云oss

web2.0时代:除了纯信息展示类的网站:基本都是有文件上传功能的: 最不济你得让用户换个头像吧:但是随着业务的发展: 如果上传的文件都和网站程序源代码放在一起:那是有相当多的弊端的: 1:静态文件会占用大量带宽: 2:服务器的成本略高: 常规的做法是把php源代码放到一台服务器上:图片等静态文件放在另一台服务器上: 当一个神奇的“云”时代的到来后:一切就变的更加简单了: 在业务还比较小的时候:我们无需大费周折的去搞一台静态文件服务器:直接使用第三方的即可: 好了:洛里啰嗦了半天:下面请出本篇博

阿里云域名及文件上传位置

以centos7.2为例. 阿里云域名备案后,还要购买阿里云服务器搭建网站,如果是新手,建议按照阿里云帮助文档里的搭建wordpress教程来完成网站环境的搭建.搭建好网站环境后,就是代码上传到哪个文件目录才能用(域名/文件名)进行访问的问题了.我的网站是phpwind,所以文件只有上传到phpwind这个目录中才能被访问,否则会出现文件找不着的错误.其实phpwind就是网站的根目录.如下图,只有文件上传到/alidata/www/phpwind中才能被访问.

在阿里云创建私有仓库上传并拉取

在阿里云上创建私有仓库,为后面的微服务上传镜像做准备,后面会安装harbor 操作指南: 1. 登录阿里云Docker Registry $ sudo docker login --username=wgr332574835 registry.cn-hangzhou.aliyuncs.com 用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码. 您可以在产品控制台首页修改登录密码. 2. 从Registry中拉取镜像 $ sudo docker pull registry.cn-han

阿里云 轻量应用服务器 上传一个HTML文件或者jsp文件 通过外网IP访问

我选择的是 宝塔Linux,现在就说一下如何往服务器里面传文件然后通过外网IP访问 1.打开宝塔Linux面板登录,安装tomcat,安装好后如图 2.点击tomcat有个文件标识处 3.出现如图 4.打开文件夹webapps/root,上传你想要的文件 tomcat默认根目录在/www/server/tomcat/webapps/ROOT 这个目录下,所以直接访问这个目录下的文件才能访问.例如:http://47.93.195.31:8080/1.jsp 然后在外部浏览器中输入http://I

阿里云 OSS 如何设置防盗链, 上个月图床流量耗费50G+,请求次数10W+,什么鬼?

欢迎关注个人微信公众号: 小哈学Java, 文末分享阿里 P8 高级架构师吐血总结的 <Java 核心知识整理&面试.pdf>资源链接!! 个人网站: https://www.exception.site/essay/how-to-set-aliyun-oss-http-referer 目录 一.背景 二.背后有啥猫腻 三.什么是盗链? 四.为什么会被盗链? 五.OSS 设置防盗链 六.验证一下效果 七.另外一些应对手段 一.背景 小哈前天陆续接到三个电话,但都因为忙于工作.下雨天等各

iOS使用阿里云OSS对象存储 (SDK 2.1.1)

最近项目中用到了阿里云OSS对象存储,用来存储APP中图片.音频等一些数据.但坑爹的阿里云居然在11月20日将SDK版本更新到了2.1.1,然而网上给出的教程都是1.*版本的(针对iOS),两个版本所调用的方法差别较大(自我感觉),当然原理都一样.所以看了两天SDK,自己封装了几个常用的方法. 一.OSS简单介绍 OSS是提供非结构化数据存取的服务,非结构化数据一般包括图片.文档.音频.视频等一些文件.OSS提供了接口,开发者可以通过这些接口对数据进行上传或下载等操作. 开通OSS服务后,创建一