七牛云存储Bucket备份Python源码

使用七牛云存储的Python SDK与Python requests模块可以实现对七牛云存储Bucket内容的备份,Python源码如下。

在运行代码之前,首先需要安装qiniu Python SDKRelease v6.1.9)与Python requests模块,或将这两个包放置在备份脚本的同目录下。

请注意:该源码暂不支持断点续传。脚本运行时,默认在当前目录下创建以bucket_name命名的目录,并将文件备份至该目录下。

#encoding=utf8

#author 在线疯狂
#使用七牛Python SDK与Python requests对Bucket内容做备份

import qiniu.conf

qiniu.conf.ACCESS_KEY = "<YOUR_APP_ACCESS_KEY>"
qiniu.conf.SECRET_KEY = "<YOUR_APP_SECRET_KEY>"

import qiniu.rsf
import requests
import os, errno, sys, shutil

def mkdir_p(path):
  try:
    os.makedirs(path)
  except OSError as exc: # Python >2.5
    if exc.errno == errno.EEXIST and os.path.isdir(path):
      pass
    else: raise

def get_file_from_qiniu(bucket_name, key, cdir):
  target = cdir + '/' + key
  dir = os.path.dirname(os.path.abspath(target))
  if not os.path.isdir(dir):
    print '[mkdir_p]', dir
    mkdir_p(dir)
  url = 'http://' + bucket_name + '.qiniudn.com/' + key
  r = requests.get(url, stream=True)
  print '[fetch]', url
  if r.status_code == 200:
    with open(target , 'wb') as f:
      r.raw.decode_content = True
      shutil.copyfileobj(r.raw, f)
  return r.status_code

def listdir(bucket_name, limit = 10, prefix=""):
  cdir = os.path.dirname(os.path.abspath(__file__)) + '/' + bucket_name
  err = None
  marker = None
  while err != 'EOF':
    rets, err = qiniu.rsf.Client().list_prefix(bucket_name, prefix=prefix, limit=limit, marker=marker)
    if err is not None:
      sys.stderr.write('error: %s ' % err)
      return
    #print rets
    marker = rets['marker']
    for item in rets['items']:
      get_file_from_qiniu(bucket_name, item['key'], cdir)

bucket_name = '<YOUR_BUCKET_NAME>'

listdir(bucket_name)
  • 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

 

本文链接:http://bookshadow.com/weblog/2014/09/30/qiniu-bucket-backup-python-code/
请尊重作者的劳动成果,转载请注明出处!书影博客保留对文章的所有权利。

如果您喜欢这篇博文,欢迎您捐赠书影博客: ,查看支付宝二维码

Pingbacks已关闭。

暂无评论

张贴您的评论