Dropbox APIでサーバー上のファイルを自動バックアップ
サイトの中で、サーバー上にあるものが正になってるコンテンツが怖いので、バックアップをDropboxに上げる仕組みを作りました。
[2022-02-20追記] シェルスクリプト1つで全部やるように修正。
やることは以下の通りです。
- バックアップ対象のファイルを、現在日時をファイル名にしたzipに固める。
- そのzipファイルをDropboxの所定のフォルダにアップロードする。
- cronで毎日実行する。
Dropboxの準備
Dropbox APIを使うためには、あらかじめDropboxアプリを用意しておく必要があります。
今回はこれ専用にアプリ登録してきました。好きなところにファイルをアップロードしたいので、Permission typeは『Full Dropbox』を選択します。
アプリ管理画面の『Generated access token』からアクセストークンを発行すれば準備完了です。
シェルスクリプトを作る
Dropboxの準備ができたら、cronから呼び出すシェルスクリプトを書きます。
バックアップ対象ファイルをzipで固めて curl
コマンドでアップロードします。
アップロードにはDropbox APIの /files/upload
エンドポイントを使います。このエンドポイントは Content-upload フォーマットなので、リクエストヘッダの Dropbox-API-Arg
にパラメータを、リクエストボディにファイル本文をセットします。詳しいことは公式のリファレンスを見てください。
cronで毎日実行させる
あとは、最初に作ったシェルスクリプトをcronで毎日実行させます。ここでは毎日午前3時5分に ubuntu
ユーザーで動くようにしました。エラー時は tmp
にログを出すようにしました。
この記事の作りだとエラー時にゴミzipが残るのが微妙ですが、今のところ失敗したことはあんまり無いので、たぶん大丈夫だと思います。
以上です。
参考にさせていただいた記事
【 zip 】コマンド(基礎編)――ファイルをZIP形式で圧縮する:Linux基本コマンドTips(34) - @IT