curlコマンドだけでDropboxにファイルを保存する方法です。Dropbox APIを使うにはJavaやPHPのライブラリが必要だと思う人も中にはいるかもしれませんが、ファイルのアップロードくらいなら、curlコマンドだけでもシンプルに扱うことができます。
Dropbox APIアクセストークンを取得する
まずは、DropboxのAPIアクセストークンを取得する必要があります。これはDropboxの画面だけでできます。
Dropboxのアプリ追加ページを開き、curl用のアプリを作ります。アプリの初期設定は次の通り。
- Choose an API ... Dropbox API
- Choose the type of access you need ... App folder
- Name your app ... 好きな名前。これがフォルダ名になる。
アプリが作られると、アプリの設定画面が出るので、その画面の中ほどにある「Generate access token」の「Generate」ボタンを押します。ここで生成されるトークンは後ほどDropbox APIを叩くときに使うので控えておきます。
アプリのトークンが生成されると同時に、自分のDropboxの「アプリ」フォルダにアプリ名のフォルダが生成されます。
curlコマンドでDropboxにファイルアップロード
DropboxのファイルアップロードAPIのエンドポイントはhttps://content.dropboxapi.com/1/files_put/auto
です。ここにPUT
もしくはPOST
します。
次がcurlコマンドは-T
で指定したファイルをDropboxにアップロードするものです。$TOKEN
には生成したアクセストークンが入ります。
curl -X PUT \
-H "Authorization: Bearer $TOKEN" \
-T /path/to/file \
https://content.dropboxapi.com/1/files_put/auto/ファイル名
標準入力を使ってファイルをアップロードする場合はこうです:
echo "ファイルの中身" | curl -X PUT \
-H "Authorization: Bearer $TOKEN" \
-T - \
https://content.dropboxapi.com/1/files_put/auto/ファイル名
DropboxをつかってMySQLのバックアップを取る
例えば、curlでDropboxにファイルを保存する方法の応用として、mysqldumpの結果を送り込み、MySQLのDBのバックアップをDropbox上に作ることもできます:1
mysqldump -uroot mydb | curl -X PUT \
-H "Authorization: Bearer $TOKEN" \
-T - \
https://content.dropboxapi.com/1/files_put/auto/mydb-backup.sql
curlでやるメリット
この方法のメリットはコーディングもないので実行までがすごく簡単というところにあると思います。次に、サーバにPHPやRubyをインストールする必要がないので、バックアップのコマンドをcronに仕込むといったことも、サーバのスペックを変更せずに行えます。
-
curlを使ったMySQLのバックアップを取るDockerイメージも作ってみました→suin/mysql-backup-dropbox ↩