暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

备份服务器文件上传到七牛云

二进制之城 2022-01-15
511


一、新建空间

注册七牛云(https://s.qiniu.com/JF7nyq)账号,然后在对象存储的空间管理中新建空间,此过程需要先进行实名认证,认证后可以获得10G的免费存储空间。


二、安装Qiniu

    pip install qiniu


    三、配置脚本

    下载backup_file_to_qiniu.py(https://github.com/YangGerald/Just-for-Fun/raw/main/backup_file_to_qiniu/backup_file_to_qiniu.py),配置access_keysecret_keybackup_dirbackup_namebucket_name的值。

      # -*- coding: utf-8 -*-
      # flake8: noqa


      from qiniu import Auth, put_file, etag, urlsafe_base64_encode
      import qiniu.config
      from qiniu.compat import is_py2, is_py3
      import time
      import os


      # 需要填写你的 Access Key 和 Secret Key
      access_key = 'Access_Key'
      secret_key = 'Secret_Key'


      # 构建鉴权对象
      q = Auth(access_key, secret_key)


      # 当前日期和时间
      date = time.strftime('%Y-%m-%d-%H-%M', time.localtime())


      # 要备份的目录,多个请用空格分隔
      backup_dir = '/data'


      # 备份名称
      backup_name = 'data'


      # 要上传的空间
      bucket_name = 'Bucket_Name'


      # 上传到七牛后保存的文件名
      key = backup_name + '_' + date + '.zip'


      # 生成上传 Token,可以指定过期时间等
      token = q.upload_token(bucket_name, key, 3600)


      # 要上传文件的本地路径
      localfile = '/tmp/' + key


      cmd = 'zip -rq tmp/' + key + ' ' + backup_dir
      os.system(cmd)


      ret, info = put_file(token, key, localfile)
      print(ret)
      print(info)


      if is_py2:
      assert ret['key'].encode('utf-8') == key
      elif is_py3:
      assert ret['key'] == key


      assert ret['hash'] == etag(localfile)


      os.system('rm -rf tmp/' + key)


      四、执行备份

        python backup_file_to_qiniu.py


        五、使用 Cron 自动化

        编辑crontab。

          crontab -e

          添加以下定时任务,该任务将会在每月第一天到时自动执行备份脚本。

            0 0 1 * * /usr/bin/env python /path/to/file/backup_file_to_qiniu.py >> /path/to/file/backup_file_to_qiniu.log
            文章转载自二进制之城,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

            评论