V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
abelyao
V2EX  ›  分享创造

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

  •  1
     
  •   abelyao ·
    abelyao · 2015-01-25 21:38:18 +08:00 · 5579 次点击
    这是一个创建于 3573 天前的主题,其中的信息可能已经有所发展或是发生改变。
    前几天用七牛 CDN 了整个网站的资源,过后想把 CDN 的结果下载备份一份在本地,却发现七牛提供的什么同步工具,都只有上传同步,没有下载同步的功能。然后七牛没有 FTP 这个大家都知道,网上搜了一下也没看到可以下载整个空间所有文件的工具。好吧,于是决定自己写一个。

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

    没啥技术含量的小工具,发出来给有同样需求的朋友,
    源码已经发布到 GitHub,有问题欢迎反馈: https://github.com/abelyao/qiniu-backup
    21 条回复    2016-07-20 17:19:52 +08:00
    ifwangs
        1
    ifwangs  
       2015-01-25 22:26:15 +08:00 via Android
    wget就可以啊
    MeowCold
        2
    MeowCold  
       2015-01-26 20:35:17 +08:00
    @abelyao 正需要这个 win7 64位 管理员模式和兼容xp模式都是在下载第一个文件时提示已停止工作 当掉了
    abelyao
        3
    abelyao  
    OP
       2015-01-26 21:01:52 +08:00 via iPhone
    @MeowCold 掃描文件通過了?到第一個文件下載才會?
    是私有空間嗎?
    或者檢查一下保存目錄?
    回頭我加個異常日誌記錄
    MeowCold
        4
    MeowCold  
       2015-01-26 21:32:40 +08:00
    @abelyao 换到根目录文件夹也一样 看过了文件夹里已经显示有第一个文件 但这时会当掉 发现七牛
    .z0.glb.clouddn.com
    .qiniudn.com
    都一样
    MeowCold
        5
    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
        6
    MeowCold  
       2015-01-26 21:41:35 +08:00
    公有目录
    abelyao
        7
    abelyao  
    OP
       2015-01-27 10:21:33 +08:00
    @MeowCold 我刚刚更新了程序发在 GitHub,现在如果出了异常可以直接在控制台显示出来了,方便查看到底是什么原因,麻烦你有时间的话重新下载一下
    MeowCold
        8
    MeowCold  
       2015-01-27 13:15:09 +08:00
    @abelyao 嗯 谢谢 我这就去下载
    MeowCold
        9
    MeowCold  
       2015-01-27 13:35:24 +08:00
    @abelyao 坑了 是显示出来了可还没看就一闪而没程序自动关闭了
    abelyao
        10
    abelyao  
    OP
       2015-01-27 15:28:01 +08:00
    @MeowCold 呃,刚刚我又更新了一下代码,你再试试?
    MeowCold
        11
    MeowCold  
       2015-01-30 21:10:33 +08:00
    @abelyao
    MeowCold
        12
    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
        13
    abelyao  
    OP
       2015-01-31 02:02:47 +08:00
    @MeowCold 话说配置文件中的域名 有没有加 http:// 呢?
    MeowCold
        14
    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
        15
    MeowCold  
       2015-01-31 14:57:27 +08:00
    @abelyao 棋恶: 罢无久无易流易散
    abelyao
        16
    abelyao  
    OP
       2015-01-31 18:25:10 +08:00
    @MeowCold 呃,你把 domain 配置为 http://7narev.com1.z0.glb.clouddn.com/ 呢?
    就是后面也有斜杠结尾,前面有 http:// 开头。
    看异常日志应该就是这个问题了,下次更新我再加个自动补全。
    MeowCold
        17
    MeowCold  
       2015-01-31 19:54:25 +08:00
    @abelyao 谢谢耐心帮我解决问题 这个程序真心不错 可以按照七牛前缀生成目录相当好用 嗯嗯 我会一直关注的 有了这个我就有心情用七牛了
    MeowCold
        18
    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
        19
    imnpc  
       2016-04-28 11:04:32 +08:00
    本地多余文件不会自动删除 请问有办法解决吗?
    Sullivan
        20
    Sullivan  
       2016-06-19 11:13:51 +08:00
    手动来表示一下感谢~正在使用~
    xbdsky
        21
    xbdsky  
       2016-07-20 17:19:52 +08:00
    感谢大师啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3044 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 12:57 · PVG 20:57 · LAX 04:57 · JFK 07:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.