Command disabled: index


̃Gg[͂ĂȃubN}[Nɒlj

Dropbox を Linux (CUI環境)で利用する



Dropbox を Linux (CUI環境)で利用します。

自分メモ

今回の用途として、gitosis の git リポジトリのリアルタイムバックアップを、Linux にインストールした Dropbox で行うことが目的でした。git リポジトリのバックアップ用途については、本エントリー下部に「付録」として、差分説明を記載しています。


Dropbox アカウントの作成

Dropbox のサイトでアカウント作成(または招待を受けてアカウント作成)しておきます。
※今回は CUI 環境で Dropbox を利用するので、PC に GUI 用のプログラムをインストール必要はありません。
 ただし、Linux ←→ PC 間で、お互いにファイルの追加や更新を行いたい時はこの限りではありません。

Dropbox アカウントでサイトにログイン

Dropbox のアカウントを作成後、ブラウザで Dropbox のサイトにログインしておきます。

Dropbox デーモンをインストール

% cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86" --no-check-certificate | tar xzf -
  • ~/.dropbox-dist というディレクトリが作られます。

Dropbox デーモンと Dropbox アカウントの紐付け

下記一連の処理を実行して、Dropbox デーモンと Dropbox アカウントを紐付けします。

まず、dropboxd を起動します。
すると下記のようなメッセージが繰り返し表示されますので、そのまま表示させておきます。

% ~/.dropbox-dist/dropboxd
このクライアントはどのアカウントにもリンクされていません...
このコンピュータをリンクするには、https://www.dropbox.com/cli_link?host_id=xxxxxxx にアクセスしてください。

 :

次に、ブラウザで Dropbox にログイン中であることを確認し、
上記のURL「https://www.dropbox.com/cli_link?host_id=xxxxxxx」にブラウザでアクセスします。

ブラウザ上でパスワード入力画面に遷移するので、パスワードを入力します。

パスワードが正しければ、下記のようにコマンドライン上で「クライアントをリンクしました。」と表示されるはずです。

% ~/.dropbox-dist/dropboxd

 :

クライアントをリンクしました。*** へようこそ!

上記のように「クライアントをリンクしました。」が表示されたら、DropboxデーモンとDropboxアカウントの紐付けは完了です。
一旦 dropboxd を停止します。

管理コマンド(dropbox.py)のインストール

運用に便利な管理コマンド(dropbox.py)をインストールしておきます。

  • 必須ではありませんので、不要であればこのセクションは飛ばしてください。
  • ただし、後述の「LAN sync を停止する」は自己解決する必要があります。

インストール

% 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 を停止する

デフォルトで 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 が自動起動するように設定しておきます。

/etc/init.d/dropbox の作成

/etc/sysconfig/dropbox の作成

% sudo vi /etc/sysconfig/dropbox
DROPBOX_USERS="<ユーザー名>"
  1. Dropbox を利用するユーザー(*)を変数「DROPBOX_USERS」に設定し、/etc/sysconfig/dropbox として配置します。
  2. 利用ユーザーが複数いる場合は、スペース区切りで列挙します。
  • (*) ホームディレクトリに Dropbox ディレクトリがあるユーザーすべて

実行権限の付与

% 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 デーモンの起動

Dropbox デーモンを起動します。

% sudo /etc/init.d/dropbox start

同期の確認

Dropbox デーモンが起動している状態で、~/Dropbox に何か適当なファイルを配置します。
数秒後、ブラウザで下記URLにアクセスして、ファイルが同期されているか確認します。
https://www.dropbox.com/home

[おまけ] cron でお手軽に Dropbox の死活監視

30 7,19 * * * root /root/dropbox.py status | grep -E "Idle|Updating|更新中" > /dev/null || mail -s 'Dropbox is not running!' hoge@example.com
  • コマンド「/root/dropbox.py status」を実行して標準出力に「Idle」「Updating」「更新中」のいずれも含まれていなかったら、「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 リポジトリのバックアップ用途で利用する場合

gitosis の git リポジトリのバックアップ用途で利用する場合は、root のホームディレクトリ(/root)内に Dropbox をインストールするのが吉。

Dropbox デーモンをインストール

% sudo su
# cd /root
# wget -O - "https://www.dropbox.com/download?plat=lnx.x86" --no-check-certificate | tar xzf -

Dropbox デーモンと Dropbox アカウントの紐付

本エントリーの同項目を参照。

管理コマンド(dropbox.py)のインストール

% 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 に成りきってから実行する。

LAN sync を停止する

本エントリーの同項目を参照。

自動起動の設定

本エントリーの同項目を参照。

git リポジトリのバックアップに対応する

方針: gitosis ディレクトリを丸ごと Dropbox で同期します。

起動スクリプトに対応するため、以下のシンボリックリンクを作成します。

% cd /home
% sudo ln -s /root root

/root 配下に Dropbox本体があると、root 以外のユーザーが git pull/push できないので、本体を /Dropbox に移動します。
そして、パーミッションを変更します。

% sudo mv /root/Dropbox /
% sudo chmod 755 /Dropbox

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

Dropbox デーモンの起動

本エントリーの同項目を参照。

同期の確認

本エントリーの同項目を参照。



server/dropbox/etc/dropbox_on_linux.txt