前段时间折腾存储空间,折腾一圈还是又拍云最香,免费。但是自己不小心把一个文件夹删了,想要找回,却没有回收站这个功能,很遗憾,它就这么没了。

所以想找个办法备份图床,另外在 Github 逛到了 upyun-sdk 所以就拿来写写。

  • 将又拍云存储的数据下载到本地,并且上传到一个新的存储空间内。
  • 为保证数据完整,禁止删除任意文件。
  • 支持同步

写这个脚本的最终目的不是省钱(图床一共也没几个钱),而是锻炼自己!

有目的的学习效率更高!

通过这个脚本,学习到了一些python的知识

  • 类的定义 (定义了一个myupyun的子类)
  • 类的继承 (myupyun类继承了 upyun-py 中的UpYun类,并且添加了一些新的代码)
  • 递归函数 (又拍云并未提供列举所有目录的接口,自己用递归编写了文件遍历函数)
  • 多级文件夹 (os.open 有时并不能创建文件夹,os.mkdir 只能创建一级文件夹,创建多级文件夹要用 os.mkdirs

另外还认识到一些不足之处来日补上

  • 函数有些凌乱
  • 并发下载
  • 进度条使用不完善
  • 数据库

讲完自己的,下面来讲将给读者的(没错就是屏幕前的你!),分享一下使用方法(0 基础)。

环境要求 python3+你喜欢的编辑器

  1. 克隆仓库

    在你喜欢的地方打开powershell or git bash 这里更建议放服务器里面,当然 Windows 也行

    git clone https://github.com/wxydejoy/upyun-backup-server.git

  2. 安装依赖

    1
    2
    3
    python -m venv venv # 创建虚拟环境
    pip install -r requirements.txt

  3. 配置参数

    打开main.py按照提示填入合适的参数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    # 只下载和上传,不删除,也就是说不需要删除权限

    # 源仓库配置
    st1_name = ""
    st1_operator = ""
    st1_password = ""

    # 目标仓库配置
    st2_name = ""
    st2_operator = ""
    st2_password = ""
    st2_link = ""

    # 本地配置
    local_dir = "local/" # 本地相对路径

  4. RUN

    运行 main.py 即可

这个备份当然可以自动

  1. 服务器
    宝塔:添加定时任务定时运行脚本即可,注意运行路径
    非宝塔:自行百度添加服务器定时任务

  2. Windows
    打开系统搜索,搜任务计划程序

    2021-12-31-20-33-46

    2021-12-31-20-35-41

    点击创建基本任务,按照引导创建即可(友情提示:任务计划程序很好用,思路放开)