写了一个七牛备份下载工具: Qiniu Backup

2015-01-25 21:38:18 +08:00
 abelyao
前几天用七牛 CDN 了整个网站的资源,过后想把 CDN 的结果下载备份一份在本地,却发现七牛提供的什么同步工具,都只有上传同步,没有下载同步的功能。然后七牛没有 FTP 这个大家都知道,网上搜了一下也没看到可以下载整个空间所有文件的工具。好吧,于是决定自己写一个。

软件是基于 .NET 2.0 做的,现在基本上 Windows 都能直接运行了,没有界面,纯粹控制台。原理很简单,就是循环读取文件列表,然后一个个下载。支持私人空间、前缀匹配、不覆盖本地文件等功能。注意使用前先在配置文件里填写相应参数。

没啥技术含量的小工具,发出来给有同样需求的朋友,
源码已经发布到 GitHub,有问题欢迎反馈: https://github.com/abelyao/qiniu-backup
5506 次点击
所在节点    分享创造
21 条回复
ifwangs
2015-01-25 22:26:15 +08:00
wget就可以啊
MeowCold
2015-01-26 20:35:17 +08:00
@abelyao 正需要这个 win7 64位 管理员模式和兼容xp模式都是在下载第一个文件时提示已停止工作 当掉了
abelyao
2015-01-26 21:01:52 +08:00
@MeowCold 掃描文件通過了?到第一個文件下載才會?
是私有空間嗎?
或者檢查一下保存目錄?
回頭我加個異常日誌記錄
MeowCold
2015-01-26 21:32:40 +08:00
@abelyao 换到根目录文件夹也一样 看过了文件夹里已经显示有第一个文件 但这时会当掉 发现七牛
.z0.glb.clouddn.com
.qiniudn.com
都一样
MeowCold
2015-01-26 21:34:46 +08:00
类似D盘根目录
<!-- 密钥 -->
<add key="AccessKey" value="****************AahZY780ibGZW3aMxAS64ez"/>
<add key="SecretKey" value="****************KkDG3II2lKiUfFVo3YHX3WL8"/>

<!-- 空间名 -->
<add key="Bucket" value="*******"/>

<!-- 域名 -->
<add key="Domain" value="*******.com1.z0.glb.clouddn.com"/>

<!-- 是否为私有空间 -->
<add key="Private" value="false"/>

<!-- 资源前缀 -->
<add key="Prefix" value=""/>

<!-- 保存路径 -->
<add key="SaveAs" value="D:\z\"/>

<!-- 覆盖本地文件(如果下载中断,关闭这个选项后重新下载,可避免流量浪费) -->
<add key="OverWrite" value="true"/>
应该对着吧
MeowCold
2015-01-26 21:41:35 +08:00
公有目录
abelyao
2015-01-27 10:21:33 +08:00
@MeowCold 我刚刚更新了程序发在 GitHub,现在如果出了异常可以直接在控制台显示出来了,方便查看到底是什么原因,麻烦你有时间的话重新下载一下
MeowCold
2015-01-27 13:15:09 +08:00
@abelyao 嗯 谢谢 我这就去下载
MeowCold
2015-01-27 13:35:24 +08:00
@abelyao 坑了 是显示出来了可还没看就一闪而没程序自动关闭了
abelyao
2015-01-27 15:28:01 +08:00
@MeowCold 呃,刚刚我又更新了一下代码,你再试试?
MeowCold
2015-01-30 21:10:33 +08:00
@abelyao
MeowCold
2015-01-30 21:14:40 +08:00
@abelyao
========================================
欢迎使用 Qiniu Backup 七牛备份工具
请先确保配置文件中各项配置填写正确
> 确认运行 请按 Enter 键
> 取消运行 请按任意键
========================================
21:13:30 开始扫描第 0 至 100 个文件
21:13:35 扫描到 24 个文件,开始下载
21:13:35 开始下载:FileZilla-3.7.3.zip
System.Net.WebException: 未能找到文件“D:\Debug\7narev.com1.z0.glb.clouddn.comFi
leZilla-3.7.3.zip”。 ---> System.Net.WebException: 未能找到文件“D:\Debug\7nare
v.com1.z0.glb.clouddn.comFileZilla-3.7.3.zip”。 ---> System.IO.FileNotFoundExce
ption: 未能找到文件“D:\Debug\7narev.com1.z0.glb.clouddn.comFileZilla-3.7.3.zip
”。
文件名:“D:\Debug\7narev.com1.z0.glb.clouddn.comFileZilla-3.7.3.zip”
在 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
在 System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, I
nt32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions o
ptions, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
在 System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access,
FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean
bFromProxy)
在 System.Net.FileWebStream..ctor(FileWebRequest request, String path, FileMo
de mode, FileAccess access, FileShare sharing, Int32 length, Boolean async)
在 System.Net.FileWebResponse..ctor(FileWebRequest request, Uri uri, FileAcce
ss access, Boolean asyncHint)
--- 内部异常堆栈跟踪的结尾 ---
在 System.Net.FileWebResponse..ctor(FileWebRequest request, Uri uri, FileAcce
ss access, Boolean asyncHint)
在 System.Net.FileWebRequest.GetResponseCallback(Object state)
--- 内部异常堆栈跟踪的结尾 ---
在 System.Net.WebClient.DownloadFile(Uri address, String fileName)
在 System.Net.WebClient.DownloadFile(String address, String fileName)
在 QiniuBackup.Program.Execute() 位置 c:\Users\Administrator\Desktop\qiniu-ba
ckup-master\QiniuBackup\Program.cs:行号 106
在 QiniuBackup.Program.Main(String[] args) 位置 c:\Users\Administrator\Deskto
p\qiniu-backup-master\QiniuBackup\Program.cs:行号 33
abelyao
2015-01-31 02:02:47 +08:00
@MeowCold 话说配置文件中的域名 有没有加 http:// 呢?
MeowCold
2015-01-31 14:38:43 +08:00
@abelyao 没加
如果加了就会这么提示
========================================
欢迎使用 Qiniu Backup 七牛备份工具
请先确保配置文件中各项配置填写正确
> 确认运行 请按 Enter 键
> 取消运行 请按任意键
========================================
14:37:25 开始扫描第 0 至 100 个文件
14:37:28 扫描到 24 个文件,开始下载
14:37:28 开始下载:FileZilla-3.7.3.zip
System.Net.WebException: 无法解析此远程名称: '7narev.com1.z0.glb.clouddn.comfile
zilla-3.7.3.zip'
在 System.Net.WebClient.DownloadFile(Uri address, String fileName)
在 System.Net.WebClient.DownloadFile(String address, String fileName)
在 QiniuBackup.Program.Execute() 位置 c:\Users\Administrator\Desktop\qiniu-ba
ckup-master\QiniuBackup\Program.cs:行号 106
在 QiniuBackup.Program.Main(String[] args) 位置 c:\Users\Administrator\Deskto
p\qiniu-backup-master\QiniuBackup\Program.cs:行号 33
MeowCold
2015-01-31 14:57:27 +08:00
@abelyao 棋恶: 罢无久无易流易散
abelyao
2015-01-31 18:25:10 +08:00
@MeowCold 呃,你把 domain 配置为 http://7narev.com1.z0.glb.clouddn.com/ 呢?
就是后面也有斜杠结尾,前面有 http:// 开头。
看异常日志应该就是这个问题了,下次更新我再加个自动补全。
MeowCold
2015-01-31 19:54:25 +08:00
@abelyao 谢谢耐心帮我解决问题 这个程序真心不错 可以按照七牛前缀生成目录相当好用 嗯嗯 我会一直关注的 有了这个我就有心情用七牛了
MeowCold
2015-01-31 19:57:27 +08:00
@abelyao 发现中途又开始跳错 真奇怪
19:55:22 开始下载:NM/AUS/WHMCS/Package/whmcs_v5213_full.zip
System.Net.WebException: 在 WebClient 请求期间发生异常。 ---> System.IO.IOExcept
ion: 无法从传输连接中读取数据: 远程主机强迫关闭了一个现有的连接。。 ---> System.
Net.Sockets.SocketException: 远程主机强迫关闭了一个现有的连接。
在 System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size,
SocketFlags socketFlags)
在 System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 s
ize)
--- 内部异常堆栈跟踪的结尾 ---
在 System.Net.ConnectStream.Read(Byte[] buffer, Int32 offset, Int32 size)
在 System.Net.WebClient.DownloadBitsState.RetrieveBytes(Int32& bytesRetrieved
)
在 System.Net.WebClient.DownloadBits(WebRequest request, Stream writeStream,
CompletionDelegate completionDelegate, AsyncOperation asyncOp)
在 System.Net.WebClient.DownloadFile(Uri address, String fileName)
--- 内部异常堆栈跟踪的结尾 ---
在 System.Net.WebClient.DownloadFile(Uri address, String fileName)
在 System.Net.WebClient.DownloadFile(String address, String fileName)
在 QiniuBackup.Program.Execute() 位置 c:\Users\Administrator\Desktop\qiniu-ba
ckup-master\QiniuBackup\Program.cs:行号 106
在 QiniuBackup.Program.Main(String[] args) 位置 c:\Users\Administrator\Deskto
p\qiniu-backup-master\QiniuBackup\Program.cs:行号 33
imnpc
2016-04-28 11:04:32 +08:00
本地多余文件不会自动删除 请问有办法解决吗?
Sullivan
2016-06-19 11:13:51 +08:00
手动来表示一下感谢~正在使用~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/165370

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX