导出七牛云的数据到本地服务器

2023-11-08

大概半年多以前,七牛云就失效了,一个是欠费再一个是没有绑定域名,听说是七牛云被举报了然后就必须要实名认证了,而且测试域名的时间也变得只有一个月之久,基本没什么作用了。如果绑定域名,需要该域名是备案的域名,这对于大部分自建博客的人来说基本就是死路一条了,备案的个人博主还是比较少的。

如上,我自然是没法再访问对象存储里的数据了,不过比较欣慰的是七牛云并不会删除上传的数据,数据仍然在相关的 bucket 里测试域名被回收了,现在要做的就是将数据导出,然后使用其他方案,例如阿里的oss或者自己服务器上,无论如何,将数据从七牛云导出是最重要的,但恶心人的是:七牛云的控制台里没有导出的功能,执行导出要借助额外的工具,全部工具列表如下:

https://developer.qiniu.com/kodo/tools/1302/qshell

这里我们使用 qshell,在命令行完成原数据的下载

准备工作
  • 下载 qshell
    qshell 是一个命令行工具,在 Win 系统下就是个 exe 可执行文件,官方教程还要配置环境变量,其实直接输入该 exe 名称运行也可以。
需要在该文件的目录内
$ ./qshell-windows-x64-v2.4.0.exe -v
  • 配置密钥

在七牛云的web控制台中,个人中心里的密钥管理,可以找到自己的 AK 和 SK,帐号名称即用户名。

$ ./qshell-windows-x64-v2.4.0.exe CBVEWIVBOI82391091231 284VSHDUAVBU98-vgyhsd 1805984583@qq.com
该语句执行完无输出
库的整体移动
  • 利用新空间的测试域名

由于没域名,用 qshell get 下载总是失败,或许不是域名的原因,但总归是卡住了,找了半天找到了可行的新方案,即:

实名认证 -> 新建Bucket -> 转移空间内的数据 -> 用新空间的测试域名下载

还是不用备案的域名,符合我的预期,认证也比较简单,上传身份证然后支付宝搞一下就行了,说是三个工作日审核其实完成认证操作后马上就能新建Bucket了,新建完后,记住新空间的名字,下面用 batchcopy 来完成移动。

注意:新建的空间要和原空间在同一个大区内。

  • 获得文件名列表
    这里使用 listbucket 命令,将输出存到文件中,利用 awk 直接取出第一列即可(强烈推荐使用 git bash 运行,大家应该都有)。
$ ./qshell-windows-x64-v2.4.0.exe listbucket whereareyou > tocopy.txt
只有一个参数即:空间名称
其会列出该空间内的全部文件,带文件夹路径

$ cat tocopy.txt | awk '{print $1}' > only-name.txt
去掉上面输出文件中的其他无关项,只留文件名
  • 执行 batchcopy
    其仍属于 qshell 内的命令,是个批量拷贝命令,输入是个文件名构成的文件,可以用 –forece 强制移动。
$ ./qshell-windows-x64-v2.4.0.exe batchcopy --force whereareyou zonelyn -i only-name.txt
参数分别是:旧空间名,新空间名,移动文件的名称列表
...
Copy 'whereareyou:image/acger/app.png' => 'zonelyn:image/acger/app.png' success
Copy 'whereareyou:image/acger/group.png' => 'zonelyn:image/acger/group.png' success
Copy 'whereareyou:image/gif/107659232.gif' => 'zonelyn:image/gif/107659232.gif' success
Copy 'whereareyou:image/gif/120094544.gif' => 'zonelyn:image/gif/120094544.gif' success
Copy 'whereareyou:image/gif/148607128.gif' => 'zonelyn:image/gif/148607128.gif' success
...
移动后会打印出相关信息

上述操作后,新建的 bucket 中已经具有原空间的全部数据了,并且具有测试域名。这样就比较好办了,有多种方法,这里用 qdownload 批量进行下载,由于需要拼凑下载路径,这里可以直接通过补充配置文件完成。

最后一步

在 qshell-windows-x64-v2.4.0.exe 所在的目录新建下载配置文件 dcongf.txt:

{
"dest_dir": "F:\七牛", //本地目录
"bucket": "zonelyn", //新空间名
"cdn_domain": "q35ajtip3.bkt.clouddn.com" //外链默认域名
//注释要删掉,不能留
}
  • 批量下载
    最后就可以执行批量下载的命令了,输入就是上述配置文件,这样会将整个空间内的全部文件下载到本地目录内:
$ ./qshell-windows-x64-v2.4.0.exe qdownload dconf.txt
Writing download log to file C:\Users\zonglin\.qshell\qdownload\d2f9566497ad74e39755de09c8837d9b\d2f9566497ad74e39755de09c8837d9b.log
...
Downloading image/gif/165263167.gif [25/1364, 1.8%] ...
Downloading image/gif/166739693.gif [26/1364, 1.9%] ...
Downloading image/gif/170320182.gif [27/1364, 2.0%] ...
Downloading image/gif/174817916.gif [28/1364, 2.1%] ...

...

慢慢等待上述过程完成,自此全部数据就从七牛云上弄出来了。全部数据大小在10G内是肯定没问题的,下载可能很慢,等着吧。

开倒车
  • 转存到自己的本地服务器

使用自用服务器,用 nginx 驱动,直接把数据放在自己的机器上,也不用什么cdn加速,因为并没有多少下载量,让 资源分享面 可用才是最重要的。

没有 CDN 加速,也没有任何优化,怎么说呢,一个是本身下载的就基本没有,再一个家里的上行速度还可以,如果在国内的话下载体验应该不差,在国外亲自体验下载速度大约在 700kb/s 左右,够用了。

七牛云的 BUG

对于带有空格文件名的文件,正常上传到七牛云是可以下载和访问的,但是:使用 qshell 读出文件列表时,会按空格分割并只能获取第一部分,这明显是个 大BUG,怎么说呢,七牛云的服务本身也就那样,照理说 qshell 这些东西完全可以放在前端页面上,总之令人感觉七牛云是个半成品,反正也不用了,在咋咋地吧。



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

导出七牛云的数据到本地服务器 的相关文章

  • 很好地处理数据库约束错误

    再一次 它应该很简单 我的任务是在我们的应用程序的域对象中放置一个具有唯一约束的特定字段 这本身并不是一个很大的挑战 我刚刚做了以下事情 public class Location more fields Column unique tru
  • python 集合可以包含的值的数量是否有限制?

    我正在尝试使用 python 设置作为 mysql 表中 ids 的过滤器 python集存储了所有要过滤的id 现在大约有30000个 这个数字会随着时间的推移慢慢增长 我担心python集的最大容量 它可以包含的元素数量有限制吗 您最大
  • 当玩家触摸屏幕一侧时,如何让 pygame 发出警告?

    我使用 pygame 创建了一个游戏 当玩家触摸屏幕一侧时 我想让 pygame 给出类似 你不能触摸屏幕两侧 的错误 我尝试在互联网上搜索 但没有找到任何好的结果 我想过在屏幕外添加一个方块 当玩家触摸该方块时 它会发出警告 但这花了很长
  • Geopandas 设置几何图形:MultiPolygon“等于 len 键和值”的 ValueError

    我有 2 个带有几何列的地理数据框 我将一些几何图形从 1 个复制到另一个 这对于多边形效果很好 但对于任何 有效 多多边形都会返回 ValueError 请指教如何解决这个问题 我不知道是否 如何 为什么应该更改 MultiPolygon
  • 表达式中的 Python 'in' 关键字与 for 循环中的比较 [重复]

    这个问题在这里已经有答案了 我明白什么是in运算符在此代码中执行的操作 some list 1 2 3 4 5 print 2 in some list 我也明白i将采用此代码中列表的每个值 for i in 1 2 3 4 5 print
  • 如何将 numpy.matrix 提高到非整数幂?

    The 运算符为numpy matrix不支持非整数幂 gt gt gt m matrix 1 0 0 5 0 5 gt gt gt m 2 5 TypeError exponent must be an integer 我想要的是 oct
  • IntelliJ - 调试模式 - 在程序内存中搜索文本

    我正在与无证的第三方库合作 我知道有一定的String存储在库深处的某个字段中的某处 我可以预测的动态值 但我想从库的 API 中获取它 有没有一种方法可以通过以下方式进行搜索 类似于全文搜索 full程序内存处于调试模式并在某个断点处停止
  • 循环中断打破tqdm

    下面的简单代码使用tqdm https github com tqdm tqdm在循环迭代时显示进度条 import tqdm for f in tqdm tqdm range 100000000 if f gt 100000000 4 b
  • Python 3 中“map”类型的对象没有 len()

    我在使用 Python 3 时遇到问题 我得到了 Python 2 7 代码 目前我正在尝试更新它 我收到错误 类型错误 map 类型的对象没有 len 在这部分 str len seed candidates 在我像这样初始化它之前 se
  • java.lang.NumberFormatException: Invalid int: "3546504756",这个错误是什么意思?

    我正在创建一个 Android 应用程序 并且正在从文本文件中读取一些坐标 我在用着Integer parseInt xCoordinateStringFromFile 将 X 坐标转换为整数 Y 坐标的转换方法相同 当我运行该应用程序时
  • 为美国东部以外地区的 Cloudwatch 警报发送短信?

    AWS 似乎没有为美国东部以外的 SNS 主题订阅者提供 SMS 作为协议 我想连接我的 CloudWatch 警报并在发生故障时接收短信 但无法将其发送到 SMS YES 经过一番挖掘后 我能够让它发挥作用 它比仅仅选择一个主题或输入闹钟
  • Cucumber Java 与 Spring Boot 集成 - Spring @Autowired 抛出 NullPointer 异常

    我正在为 Spring boot 应用程序编写 cucumber java 单元测试来测试每个功能 当我与 Spring Boot 集成时 Autowired 类抛出 NullPointer 异常 Spring Boot应用程序类 Spri
  • Python:计算字典的重复值

    我有一本字典如下 dictA unit1 test1 alpha unit1 test2 beta unit2 test1 alpha unit2 test2 gamma unit3 test1 delta unit3 test2 gamm
  • 替换后增量

    我自己已经有一个问题了 但我想扩展它后增量示例 https stackoverflow com questions 51308967 post increment with example char a D int b 5 System o
  • VSCode:调试配置中的 Python 路径无效

    对 Python 和 VSCode 以及 stackoverflow 非常陌生 直到最近 我已经使用了大约 3 个月 一切都很好 当尝试在调试器中运行任何基本的 Python 程序时 弹出窗口The Python path in your
  • 如何从没有结尾的管道中读取 python 中的 stdin

    当管道来自 打开 时 不知道正确的名称 我无法从 python 中的标准输入或管道读取数据 文件 我有作为例子管道测试 py import sys import time k 0 try for line in sys stdin k k
  • spring中如何使用jackson代替JdkSerializationRedisSerializer

    我在我的一个 Java 应用程序中使用 Redis 并且正在序列化要存储在 Redis 中的对象列表 但是 我注意到使用 RedisTemplate 会使用 JdkSerializationRedisSerializer 相反 我想使用 J
  • javafx android 中的文本字段和组合框问题

    我在简单的 javafx android 应用程序中遇到问题 问题是我使用 gradle javafxmobile plugin 在 netbeans ide 中构建了非常简单的应用程序 其中包含一些文本字段和组合框 我在 android
  • 具有特定参数的 Spring AOP 切入点

    我需要创建一个我觉得很难描述的方面 所以让我指出一下想法 com x y 包 或任何子包 中的任何方法 一个方法参数是接口 javax portlet PortletRequest 的实现 该方法中可能有更多参数 它们可以是任何顺序 我需要
  • Python - 字典和列表相交

    给定以下数据结构 找出这两种数据结构共有的交集键的最有效方法是什么 dict1 2A 3A 4B list1 2A 4B Expected output 2A 4B 如果这也能产生更快的输出 我可以将列表 不是 dict1 组织到任何其他数

随机推荐

  • MySQL - 表索引概述

    索引概述 基本概念 日常生活中 我们经常会在电话号码簿中查阅 某人 的电话号码 按姓查询或者按字母排序查询 在字典中查阅 某个词 的读音和含义等等 以快速的找到特定记录 在这里 姓 和 字母 都可看作是索引 而按 姓 或者 字母 查询则是按
  • 进程控制一之进程创建、进程终止、进程等待

    进程创建 创建子进程使用fork函数 fork有两个返回值 pid t fork void pid t相当于int 失败 返回小于0的值 成功 0 返回给子进程 大于0 返回子进程的pid给父进程 fork失败原因 内存不足 创建PCB是需
  • 程序员编程艺术PDF

    程序员编程艺术 链接 https pan baidu com s 1XWk E2DIJwYRlXNGwB LHA 提取码 nptd
  • Java基础(24)——异常、处理异常的方式详解及示例

    Java基础 24 异常详解 版权声明 一 异常体系 1 概述 2 异常的根类 Throwable 3 错误 Error 4 Exception 二 异常的处理方式 1 默认的异常处理方式 2 try catch方式 1 基本知识 2 使用
  • boost::sort::block_indirect_sort相关的测试程序

    boost sort block indirect sort是Boost库中的一个排序算法 它在排序大型数据集时表现出色 本文将介绍如何使用Boost库中的block indirect sort算法 并提供一个相关的测试程序 首先 确保已经
  • 帆软设置参数框样式

    修改前 修改后 ps 取消掉参数面板的 常用参数组合 自定义初始化控件后点击文本框会弹出对应的显示框 each this options form name widgets function i item console info item
  • android.util.AndroidRuntimeException: You cannot combine custom titles with other title features

    在做项目的时候自定义一个TitleBar 但是 其中是用到TabHost ActivityGroup 左右滑动的时候 由于TabHost中有个默认的titleBar 而在哪个自己的主界面也有一个titlebar 两个冲突了所以会报错andr
  • 【算法竞赛宝典】语言之争

    算法竞赛宝典 语言之争 题目描述 代码展示 题目描述 代码展示 语言之争 include
  • linux下查看系统安装时间,Linux下如何查看系统启动时间和运行时间以及安装时间...

    1 uptime命令 输出 16 11 40 up 59 days 4 21 2 users load average 0 00 0 01 0 00 2 查看 proc uptime文件计算系统启动时间 cat proc uptime 输出
  • 数值计算笔记之插值(三) 分段线性插值

    0 回顾 对于 拉格朗日插值多项式与牛顿插值多项式的统一 次拉格朗日插值多项式为 其中 牛顿插值公式 在插值节点 插值条件相同的情况下 二者本质一样 只是计算过程不一样 牛顿插值适合需要增加节点 提高精度的情况 不需要重新开始计算 可以利用
  • dfs和bfs求二叉树的深度

    方法一 后序遍历 DFS 树的后序遍历 深度优先搜索往往利用 递归 或 栈 实现 本文使用递归实现 关键点 此树的深度和其左 右 子树的深度之间的关系 显然 此树的深度 等于 左子树的深度 与 右子树的深度 中的 最大值 1 终止条件 当
  • 数据结构_43

    主要内容 背包问题 关键路径 一 背包问题 给定空间 给定物品 选取最符合条件的物品 0 1背包 完全背包 多重背包 二 关键路径 AOV网中完成所有事件需要的最短时间 最长路径 关键活动所在的路径 AOV网 有向带权图 起点 入度为零 终
  • 机械革命旷世e win10 ubuntu20双系统(安装与删除)

    参考 https www bilibili com video BV1554y1n7zv 这里面把整体性的东西说的很清楚 这里我主要记录对这个机型的一些特别不一样的地方 注意事项 1 一定要先解决磁盘的bitlocker状态 那个有影响 2
  • FISCO BCOS(十九)———新开虚拟机在搭建区块链平台时的部分问题及解决办法

    1 新开虚拟机的密码认证问题 2 网卡固定问题 root wyg virtual machine vim etc netplan 01 network manager all yaml 3 ubuntu远程连接的问题 4 无法解析域名 cn
  • 魔兽世界怀旧服哪个服务器金价稳定,魔兽世界怀旧服 金价到底会跌到多少的分析...

    原标题 魔兽世界怀旧服 金价到底会跌到多少的分析 魔兽世界怀旧服有一个特点 大家对金价的敏感程度堪比外汇买家 在外汇交流群都没见过如此频率的价格关注与分析 在魔兽怀旧服 几乎人人都是满仓炒家 每次金价下跌一片哀嚎的景象 还真是MMORPG里
  • adb push&pull文件方法

    adb push命令 从电脑上传送文件到设备 adb pull命令 从手机传送文件到电脑 pull命令 从手机传送文件到电脑 a cmd 控制台 adb connect ip 连接设备 b adb devices查看设备连接情况 c 将设备
  • 【VS2010学习笔记】【函数学习】一(VC6.0和VS2010主函数的不同)

    问题 为什么VC6 0中主函数为main 而VS2010中为 tmain 1 Main是所有c或c 的程序执行的起点 tmain是main为了支持unicode所使用的main的别名 tmain 不过是unicode版本的的main 2 t
  • 题目 1052: [编程入门]链表合并

    已有a b两个链表 每个链表中的结点包括学号 成绩 要求把两个链表合并 按学号升序排列 输入格式 第一行 a b两个链表元素的数量N M 用空格隔开 接下来N行是a的数据 然后M行是b的数据 每行数据由学号和成绩两部分组成 输出格式 按照学
  • 相机模型-计算机视觉

    摄像机的基本成像模型 通常称为针孔模型 pinhole model 由三维空间到像平面的中心投影变换给出 如上图 a 所示 空间点Oc是投影中心 它到平面 的距离为f 空间点Xc在平面 上的投影 像 是以点Oc为端点并经过Xc的射线与平面
  • 导出七牛云的数据到本地服务器

    大概半年多以前 七牛云就失效了 一个是欠费再一个是没有绑定域名 听说是七牛云被举报了然后就必须要实名认证了 而且测试域名的时间也变得只有一个月之久 基本没什么作用了 如果绑定域名 需要该域名是备案的域名 这对于大部分自建博客的人来说基本就是
Powered by Hwhale