在早前的 AmazonEC2 架站 – Security 篇 Part 2 中有介绍过利用 DropboxUploader 把 WordPress 定期备份到免费的 Dropbox 云端储存。一直都相安无事,但近来就出现问题了,由于博客的图片愈来愈大,备份出来的容量似乎一旦超出 10MB ,DropboxUploader 就不能把它顺利地上传到 Dropbox 空间了。

博客不能没有备份的,而备份的主要重点就是备份不能与正本存放于同一个储存装置,所以我得要设法打破 Dropbox 这 10MB 上传的限制。

Dropbox API

Dropbox
Dropbox

在网上找寻和研究了一阵,发现 Dropbox API 应该会是备份的出路。相信大家大多数使用 Dropbox ,都只是在自己的电脑中安装 Dropbox Client 或直接登入它的网页介面,把档案上传到 Dropbox 或从 Dropbox 下载档案。但其实,Dropbox 是有提供 SDK 及 API 给广大的开发人员使用,让 Dropbox Cloud Storage 整合于自己的程式中。

要利用 Dropbox API ,首先当然要有 Dropbox 的账户,然后得要登入以下的网站去登记一个 Dropbox App:

https://www.dropbox.com/developers

  1. 登入后,于 App Console 画面中点击 Create app。

    1. Create Dropbox App
    1. Create Dropbox App
  2. 因为我的应用只是想把备份上传至 Dropbox ,所以我就选择了 Dropbox API app 及 Files and datastores,然后就要选择是否只局限新的 Dropbox App 只存取它自己档案或存取所有 Dropbox 账户的档案,最后就要给予它一个应用程式名称。

    2. Select Dropbox App Attribute
    2. Select Dropbox App Attribute
  3. 完成后点击 Create app,您的 Dropbox App 就创建成功并进入以下的画面,其中一定要记下 App key 和 App Secret 这两个数值。

    3. Dropbox App Main Screen
    3. Dropbox App Main Screen
  4. 如果只是个人应用,就无须申请 Production 和加入其他开发人员。做到这里,最基本的 Dropbox App 配置已经完成,接下来就是下载 Dropbox SDK。于 Dropbox SDK 下载网页中,有林林种种不同的程式开发语言的 SDK:
    4. Dropbox SDK List
    4. Dropbox SDK List

    由于我是打算利用 Unix Cron 把博客备份到 Dropbox 去,所以顺理成章地选择了 Python SDK,因为现在几乎所有 Linux 都预装 Python 了。

  5. SSH 登入 Amazon EC2 Instance,然后 wget 了 Python SDK,按照 Dropbox 的 Installation Guide 安装了 SDK 后 (安装要 root 权限 ),在 SDK 中的 example folder 下,找到了 cli_client.py 这个 Python 程序。
  6. 由于懒人的关系,我只打算直接应用 cli_client.py 就算了,并不想亲自开发专有的程序来作备份用途。试用后,其实 cli_client.py 都足够应付一般所需了。首先,大家要 vi cli_client.py,然后加入自己早前记下来的 Dropbox App 的 App key 和 App secret。
    # XXX Fill in your consumer key and secret below
    # You can find these at http://www.dropbox.com/developers/apps
    APP_KEY = '<Input App Key here>'
    APP_SECRET = '<Input App Secret here>'
    
  7. 然后在 Unix shell 下执行 cli_client.py,第一次应用首先要拿到 OAuth 授权 Token ,所以要打下 login,如下:
    Dropbox> login
    1. Go to: https://www.dropbox.com/1/oauth2/authorize?response_type=code&client_id=xxxxxxxxxxxxxx
    2. Click "Allow" (you might have to log in first).
    3. Copy the authorization code.
    Enter the authorization code here:
    
  8. 它会告诉您用浏览器到一个 URL 去拿到授权密码:
    5. Ask for Authorization
    5. Ask for Authorization

    按下允许,就会显示出授权码:

    6. Authorization Code
    6. Authorization Code
  9. 把授权码输入 cli_client.py 的 login 程序后,cli_client.py 基本上就已经与您的 Dropbox App 打通了。完成后,您会收到 Dropbox 寄给您一封电邮说明有一个应用程式连接到 Dropbox ,并您会发现在您的 Dropbox 中会多了一个 应用程式文件夹,当中还有您刚建立的 Dropbox App 名称的文件夹。

    7. Application Folder
    7. Application Folder
  10. 另外,您还可以在 cli_client.py 利用 help 显示可用的命令:
    Dropbox> help
    account_info: display account information
    cat: display the contents of a file
    cd: change current working directory
    exit: exit
    get:
     Copy file from Dropbox to local file and print out the metadata.
    Examples:
     Dropbox> get file.txt ~/dropbox-file.txt
    login: log in to a Dropbox account
    login_oauth1: log in to a Dropbox account
    logout: log out of the current Dropbox account
    ls: list files in current remote directory
    mkdir: create a new directory
    mv: move/rename a file or directory
    put:
     Copy local file to Dropbox
    Examples:
     Dropbox> put ~/test.txt dropbox-copy-test.txt
    rm: delete a file or directory
    search: Search Dropbox for filenames containing the given string.
    thumbnail:
     Copy an image file's thumbnail to a local file and print out the
     file's metadata.
    Examples:
     Dropbox> thumbnail file.txt ~/dropbox-file.txt medium PNG
    Dropbox>
  11. 基本上都是十分简单易明的 get, put, ls, rm 等命令,应该很快上手,利用以下的脚本 ( Script ) 作测试:
    cat << EOF | ./cli_client.py
    put ~/db_20140530.tgz db_20140530.tgz
    EOF
  12. Yeah! 大功告成,成功地突破了 10MB 的限制,只要把脚本 ( Script ) 作少少修正,就可以继续用 Dropbox 作为我的博客备份了。

    8. 测试成功,大功告成!
    8. 测试成功,大功告成!
Dropbox API – 基础应用
标签:            

发布留言

发布留言必须填写的电子邮件地址不会公开。 必填栏位标示为 *