Dropbox を Linux (CUI環境)で利用します。
自分メモ |
---|
今回の用途として、gitosis の git リポジトリのリアルタイムバックアップを、Linux にインストールした Dropbox で行うことが目的でした。git リポジトリのバックアップ用途については、本エントリー下部に「付録」として、差分説明を記載しています。
Dropbox のサイトでアカウント作成(または招待を受けてアカウント作成)しておきます。
※今回は CUI 環境で Dropbox を利用するので、PC に GUI 用のプログラムをインストール必要はありません。
ただし、Linux ←→ PC 間で、お互いにファイルの追加や更新を行いたい時はこの限りではありません。
Dropbox のアカウントを作成後、ブラウザで Dropbox のサイトにログインしておきます。
% cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86" --no-check-certificate | tar xzf -
下記一連の処理を実行して、Dropbox デーモンと Dropbox アカウントを紐付けします。
1 |
---|
まず、dropboxd を起動します。
すると下記のようなメッセージが繰り返し表示されますので、そのまま表示させておきます。
% ~/.dropbox-dist/dropboxd このクライアントはどのアカウントにもリンクされていません... このコンピュータをリンクするには、https://www.dropbox.com/cli_link?host_id=xxxxxxx にアクセスしてください。 :
2 |
---|
次に、ブラウザで Dropbox にログイン中であることを確認し、
上記のURL「https://www.dropbox.com/cli_link?host_id=xxxxxxx」にブラウザでアクセスします。
3 |
---|
ブラウザ上でパスワード入力画面に遷移するので、パスワードを入力します。
4 |
---|
パスワードが正しければ、下記のようにコマンドライン上で「クライアントをリンクしました。」と表示されるはずです。
% ~/.dropbox-dist/dropboxd : クライアントをリンクしました。*** へようこそ!
5 |
---|
上記のように「クライアントをリンクしました。」が表示されたら、DropboxデーモンとDropboxアカウントの紐付けは完了です。
一旦 dropboxd を停止します。
運用に便利な管理コマンド(dropbox.py)をインストールしておきます。
% mkdir ~/bin % cd ~/bin % wget -O dropbox.py "http://www.dropbox.com/download?dl=packages/dropbox.py" % chmod a+x dropbox.py
% dropbox.py help Dropbox command-line interface commands: :
% dropbox.py help File "/path/to/bin/dropbox.py", line 164 with open(pidfile, "r") as f: ^ SyntaxError: invalid syntax
もし上記のように「SyntaxError: invalid syntax」が発生する場合は、python のバージョンに問題があります。
今回、当方のサーバーには python2.6 が入っていたので、python スクリプトのシェバングを下記のように書き換えて対応しました。
※本スクリプトの動作環境は、python2.6以上のようです。
% vim dropbox.py 書換前)#!/usr/bin/python 書換後)#!/usr/bin/python2.6
コマンドは、rootユーザーになって実行する必要がある? ▼誤った実行の仕方 % sudo /root/dropbox.py status ▼正しい実行の仕方 % sudo su # /root/dropbox.py status
# Dropbox の起動 % dropbox.py stop # Dropbox の停止 % dropbox.py start # ステータス % dropbox.py status # その他は、help で確認 % dropbox.py help
デフォルトで LAN sync というのが有効になっており、udp でブロードキャストしまくっているようです。
他のサーバーに迷惑になるので、下記コマンドにて、LAN sync を停止します。
% dropbox.py lansync enables or disables LAN sync dropbox lansync [y/n] options: y dropbox will use LAN sync (default) n dropbox will not use LAN sync % dropbox.py lansync n
サーバーが再起動した時のために、Dropbox が自動起動するように設定しておきます。
下記URLから頂戴させていただき、/etc/init.d/dropbox に配置します。(感謝)
http://www.maruko2.com/mw/Dropbox%E3%82%92Linux%E3%81%A7%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95#.E8.B5.B7.E5.8B.95.E3.82.B9.E3.82.AF.E3.83.AA.E3.83.97.E3.83.88
% sudo vi /etc/sysconfig/dropbox DROPBOX_USERS="<ユーザー名>"
% sudo chmod a+x /etc/init.d/dropbox
% sudo chkconfig dropbox on % chkconfig --list dropbox dropbox 0:off 1:off 2:on 3:on 4:on 5:on 6:off
Dropbox デーモンを起動します。
% sudo /etc/init.d/dropbox start
Dropbox デーモンが起動している状態で、~/Dropbox に何か適当なファイルを配置します。
数秒後、ブラウザで下記URLにアクセスして、ファイルが同期されているか確認します。
https://www.dropbox.com/home
30 7,19 * * * root /root/dropbox.py status | grep -E "Idle|Updating|更新中" > /dev/null || mail -s 'Dropbox is not running!' hoge@example.com
30 7,19 * * * root /root/dropbox.py running && echo $? | mail -s 'Dropbox is not running!' hoge@example.com
付録 |
---|
gitosis の git リポジトリのバックアップ用途で利用する場合は、root のホームディレクトリ(/root)内に Dropbox をインストールするのが吉。
% sudo su # cd /root # wget -O - "https://www.dropbox.com/download?plat=lnx.x86" --no-check-certificate | tar xzf -
本エントリーの同項目を参照。
% sudo su % cd /root % wget -O dropbox.py "http://www.dropbox.com/download?dl=packages/dropbox.py" % chmod a+x dropbox.py
% dropbox.py help
⇒ エラーが出る場合は、本エントリーの同項目を参照。
本エントリーの同項目を参照。
# ステータス % dropbox.py status
root で実行されいる Dropbox デーモンの状態を知りたい時は
% sudo /root/dropbox.py status
としてもダメ。(sudo では、環境変数が root のものにならない為)
素直に、
% sudo su # /root/dropbox.py status
とし、完全に root に成りきってから実行する。
本エントリーの同項目を参照。
本エントリーの同項目を参照。
方針: gitosis ディレクトリを丸ごと Dropbox で同期します。
1 |
---|
起動スクリプトに対応するため、以下のシンボリックリンクを作成します。
% cd /home % sudo ln -s /root root
2 |
---|
/root 配下に Dropbox本体があると、root 以外のユーザーが git pull/push できないので、本体を /Dropbox に移動します。
そして、パーミッションを変更します。
% sudo mv /root/Dropbox / % sudo chmod 755 /Dropbox
3 |
---|
gitosis ディレクトリを Dropbox 配下に移動します。
そして、もともと gitosis ディレクトリがあったパスは、シンボリックリンクを配置して対応します。
% cd /var/lib % sudo mv gitosis /Dropbox/ % sudo mkdir -p /Dropbox/var/lib # /var/lib は、実パスと合致させる為の運用方針です。 % ln -s /Dropbox/var/lib/gitosis gitosis
本エントリーの同項目を参照。
本エントリーの同項目を参照。