google driveとubuntuをcronで同期させてみた話 google-drive-ocamlfuse

パソコンをここ一年で数回、SSDが突然死したり、お酒をこぼしてクラッシュさせてデータ消失ということをしてしまっているので、
いい加減なんとかしないとと思い、データを同期させる設定をしてみました。

ウェブ制作部分については、Gitでどうにかなるものの、
請求書関係などについてはわざわざ同期するのも面倒くさく、
自動でどうにかできないかなと。

google driveをそもそも最初から作業フォルダとして使ってしまえば良かったりもしそうですが、
ストレージ系はネットやパソコンが突然死んだ時に謎のデータ消失を起こしたりしたので、
いまいち信用できずにいたりしたところです。

特に、今回使用するgoogle drive ocamlfuseは、やや遅く、数秒待たなければならないため、通常使うフォルダとしてはストレスフルになりそうでした。

色々と検討した結果、
随時アップしていくよりも、作業フォルダをCronで定期的に同期させるのが一番安定しそうかなと思いました。

ので、その作業工程を。

まずは、Googleドライブを使えるようにする。

google drive ocamlfuseをインストール

sudo add-apt-repository ppa:alessandro-strada/ppa
sudo apt-get update
sudo apt-get install google-drive-ocamlfuse

認証

google-drive-ocamlfuse

マウント
(今回ホームディレクトリのgoogleというフォルダに設置するていで。)

mkdir ~/google
google-drive-ocamlfuse ~/google

これで、~/googleをgoogle driveでマウントしました。

自動起動設定

「自動起動するアプリケーション」で、google-drive-ocamlfuseを追加
コマンドは「google-drive-ocamlfuse /home/[ユーザー名]/google」

これで、起動時に指定したフォルダにgoogle driveがマウントされます。

自動アップロード

自動アップロードしたいフォルダを、Googledriveにアップするコマンドは、

rsync -auz --delete ~/document/ ~/google/sync/

上記の場合、ドキュメントフォルダを、グーグルドライブのsyncフォルダ内に同期させます。

rsyncは、ファイルの同期などを行うコマンドですが、
オプション値がやや鬼門で、最初は-azにしていたのですが、そうすると、一旦全削除してから再度アップする様子でした。

そのため、えらく時間がかかり、サスペンドがなぜか実行できなくなったりしました。

もし、google-drive-ocamlfuseを使用してsuspendができなくなったりシャットダウンがやたら遅くなったら、
ここでずっと止まっている可能性がありますのでチェックしてみてください。

さて、コマンド自体は上だとして、crontabにそのまま書いても良いのですが、
上記の都合で、一旦自動起動を切ったりしていたりした関係と、
ネットが使えない環境の場合だと、マウントしていない状態でフォルダの中にファイルができてしまうため、
マウントされている時だけ同期するようにしなければいけません。

適当なところにshellを保存して、そのファイルを自動実行させましょう。
以下のようにしています。

#!/bin/sh
if mount | grep /[設置場所]/google > /dev/null; then
rsync -auz --delete ~/document/ ~/google/sync/
fi
exit 0

これで、マウントされている時は実行する、という形ができました。

cronに登録


sudo vi /etc/crontab

クロンのファイルを開いたら、

5 */3 * * * USER /bin/bash [上のファイルまでのパス]

として保存すると、3時間おきに同期してくれます。

これでもうデータが消えても大丈夫!
いざという時の為の同期術でした。

 
Share on Facebook

見積もり・問い合わせフォーム
ガチ株式会社へのお仕事ご依頼・お見積もりの問い合わせはこちらから送信ください。
ホームページ作成
PHP制作依頼
wordpressカスタマイズ依頼
システム開発見積もり依頼
飲食店販促サービス問い合わせ
求人
会ってみたい!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です