Raspberry Piでファイルサーバ、Part5 Google Driveで重要ファイルのバックアップ編

Raspberry Piに外付けHDDをつけてファイルサーバにして、外付けHDDのバックアップとしてもう1つ外付けHDDをつなげました。

まずありえないと思うのですが地震雷火事などで外付けHDDとバックアップ用HDDが両方共消失した場合に備えて、重要ファイルだけGoogle DriveにバックアップするようにRaspberry Piを設定します。


Google Driveの無料スペースは15GBです。Gmailとかも合わせての容量ですが、Gmailは100MBも使っていないと思うので、基本15GB近く使えます。

もっと容量が欲しい人は
100GBで月1.99ドル、1TBで月9.99ドルになります。Googleドライブの保存容量のプラン

griveのインストールと設定

Raspberry PiでGoogle Driveを同期するのにgriveを使います。

参考サイト:Back up your Pi to your Google drive

参考サイトにしたがってインストールと設定を行います。
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install git cmake build-essential libgcrypt11-dev libjson0-dev libcurl4-openssl-dev libexpat1-dev libboost-filesystem-dev libboost-program-options-dev binutils-dev libboost-test-dev libqt4-dev libyajl-dev

git clone git://github.com/Grive/grive.git

State.ccを少し修正します。修正箇所251行、252行、256行
sudo vim grive/libgrive/src/drive/State.cc

void State::Write( const fs::path& filename ) const
{
        Json last_sync ;
        //last_sync.Add( "sec", Json(m_last_sync.Sec() ) );
        //last_sync.Add( "nsec",        Json(m_last_sync.NanoSec() ) );
        last_sync.Add( "sec", Json((boost::uint64_t)m_last_sync.Sec() ) );
        last_sync.Add( "nsec", Json((boost::uint64_t)m_last_sync.NanoSec() ) );
        
        Json result ;
        result.Add( "last_sync", last_sync ) ;
        //result.Add( "change_stamp", Json(m_cstamp) ) ;
        result.Add( "change_stamp", Json((boost::uint64_t)m_cstamp) ) ;
        
        std::ofstream fs( filename.string().c_str() ) ;
        fs << result ;
}

makeします。とても時間がかかります。
cd ./grive
cmake .
make

Google Drive用のディレクトリを作る
sudo mkdir /media/hdd1/google_drive
sudo cp ./grive/grive /media/hdd1/google_drive
cd /media/hdd1/google_drive

sudo ./grive -a
表示されるURLをコピーしてブラウザに貼り付けて承認します。承認すると承認コードが表示されるので、それをコピーして所定の位置に承認コードを貼り付けます。

これで同期が開始されます。
同期といっても一度限りで、ずーと同期してくれるものではありません。

Shellスクリプトを作成します。
sudo vim /home/username/grive_backup.sh

#!/bin/sh

cd /media/hdd1/google_drive
./grive

crontabで人がアクセスしないような時間帯に同期をとるようにします。
sudo crontab -e
0 3 * * *  sh /home/username/grive_backup.sh
真夜中の3時に同期をとることにしました。

Google Driveへのシンボリックリンクを無視するので、Google Driveからシンボリックリンクを作成します。
cd /media/hdd1/google_drive
ln -s /media/hdd1/google_drive/samba_public /media/hdd1/samba/public/google_drive
これで共有フォルダ(public)にGoogle Driveのフォルダが作成されてそのフォルダ内のデータが毎夜Googleへバックアップされます。Sambaを入れていない人はRaspberry Piでファイルサーバ、Part1 Samba基本編を参考にしてください。

完了と思いきやWindowsから共有フォルダのgoogle_driveにアクセスできません。アクセスして書き込めるようにします。
cd /media/hdd1/google_drive
sudo chown your_username:your_username samba_public

sudo vim /etc/samba/smb.conf

[global]
wide links = yes
follow symlinks = yes
unix extensions = no

sudo /etc/init.d/samba restart
これで共有フォルダのgoogle_driveにアクセスして書き込めるようになります。

実際、共有フォルダに重要ファイルを置くのはどうかと思いますが、上記のやり方で個人フォルダごとにgoogle_driveを割り当てることができます。個人ごとの重要ファイルはそこに入れて置けば他の人は削除できないので、そんな感じで使えば良いと思います。

コメントを残す

メールアドレスが公開されることはありません。