694びぼーろく; GWに突入した

ので嬉しい。ゆっくりすることにした。 さて、研究室で 一生懸命  適当に育てていたコーヒーの木が14年目にして花を咲かせ、コーヒーの実をつけた。これも嬉しい。

356びぼーろく; 再 google drive の自動同期

rcloneを使ってgoogledriveと同期していたが、やはり面倒なので自動的にやってほしい。
双方向同期をしてくれる grive2 とファイルの状態を監視してくれるincronでgoogle driveを同期することに成功したようなので、そのメモ。
grive2はgriveのフォークされたものらしい(詳しくはここを参照)。

grive2はdebianのパッケージにはないので自分でコンパイルが必要。おそらく書いてあるとおりにやればOK。
まずは必要なパッケージをインストール。

    apt-get install git cmake build-essential libgcrypt11-dev libyajl-dev \
    libboost-all-dev libcurl4-openssl-dev libexpat1-dev libcppunit-dev binutils-dev \
    debhelper zlib1g-dev dpkg-dev pkg-config

適当な作業ディレクトリにgriveのファイルをコピーしてコンパイルを実行。

    mkdir GRIVE2
    cd GRIVE2
    git clone https://github.com/vitalif/grive2
    cd grive2
    dpkg-buildpackage -j4

最後に鍵がないと怒られるがパッケージ自身はGRIVE2以下にできているはず。公開するパッケージでもないので、とりあえず良しとする。
あとはgdebi等でインストールする。 うまくできていればGRIVE2以下は不要なのでGRIVE2は削除してもOK。

さて、google driveと同期したいディレクトリを ~/GOOGLEDRIVEとする。 まずは以下を実行。

    grive -a -p ~/GOOGLEDRIVE

うまく行けばgoogleに認証してもらうためのリンクが表示されるので言われたとおりに認証し、コードを取得する。 後はgriveに取得したコードを入力する。
うまく行けば同期が始まるので同期が終わるまでのんびり待つ。

今回の最大目的は同期の自動化なので、~/GOOGLEDRIVEを監視して、変更があればgriveを動かすようにしたい。 そこでincron(inotify clon)を利用する。
まずは必要なものをインストール。

    apt-get install incron

incronはそのままだと通常ユーザーは使えないそうなので、/etc/incron.allow に自分のユーザー名を追加しておく。 (ファイル自体を削除するという記事も見かけたけど、一応許可するユーザを追加することにした)

その後はincrontab -e で以下を追記。

/home/ユーザー名/GOOGLEDRIVE IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_DELETE_SELF,IN_CLOSE,IN_MOVE_SELF,IN_MOVE,IN_NO_LOOP /bin/sleep 4 &&/usr/bin/grive -p $@

書式は 「監視する対象(ディレクトリ可)」 「監視イベント」 「イベントが起きたときの実行するコマンド」 となっているので適宜入力。
監視イベントはいまいち良く分からないので、このあたりを参照。inotifyとよく似ているが、最後のIN_NO_LOOPは「実行するコマンドが完了するまで、イベント監視を無効にする」らしい($@は監視する対象を表す変数)。
ちなみに、なぜか$PATHは反映されていないらしいのでコマンドは絶対パスで書く。
(未確認)

うまく実行されているかどうか適当にテストしてみてうまく同期されているかどうか確認する。 一応/var/log/syslogも確認しておくと安全かも。

さて、このままだとgoogle driveで変更があった場合に同期されないので、通常のcronで適当な感覚で同期してもらうことにする。
crontab -e で以下を追加。

     */15 * * * * grive -p ~/GOOGLEDRIVE

これで15分毎にgriveが実行されるはず。

さて、これでgriveが定期的にかつローカルのファイルが変更されれば自動実行されるようになった。うれしい。

コメント

このブログの人気の投稿

471びぼーろく; ffmpegの音・映像ずれ修正

329びぼーろく; latexでヤング図を書く

531びぼーろく; python上でのヤコビ楕円関数