無料VPSのデータをGoogleドライブに自動バックアップする設定方法

LinuxVPSのrcloneを使ったGoogleDriveへの同期の流れ インフラ・サーバー

エックスサーバーの無料VPS(仮想専用サーバー)を利用する際、最も気をつけたいのがデータの安全管理です。

万が一のサーバー障害や、更新忘れ、無料プランの予期せぬ停止に備え、データを自動で外部(Googleドライブ)にバックアップする仕組みを構築しましょう。

特に自分は無料のエックスサーバーVPSを使用していて更新忘れによってVPSのデータを失った経験が何回もあります。そんな経験からこの記事をまとめました。

本記事では、Linuxサーバーで定番のストレージ同期ツール「rclone」を使い、安全・確実に自動バックアップを行う手順を解説します。

1. 本構成のメリットと全体像

なぜ「rclone × Googleドライブ」の組み合わせが最適なのでしょうか?

  • コストゼロ:Googleドライブの無料枠(15GB)を活用すれば、完全無料で運用可能です。
  • 高い信頼性:クラウドストレージ最大手であるGoogleのインフラに保管するため、VPS側のハード障害から分離できます。
  • 自動運用:一度設定すれば、毎日指定した時間に放置でバックアップが完了します。
rcloneを使ったVPSデータのクラウドへのバックアップの概要
  • 全体の作業フロー(所要時間:約15〜20分)
[VPS (Linux)] --- (rclone転送) ---> [Google Drive]
     │
     └── (cron) 毎日深夜にスクリプトを自動発動

2. バックアップ全体の流れ

以下の4つのステップで設定を行います。作業時間は約15〜20分です。

  1. rcloneのインストール:VPSに同期ツールを導入します。
  2. Googleドライブの連携設定:API接続に必要な認証(トークン)を通します。
  3. バックアップスクリプトの作成:データを圧縮し、Googleドライブへ転送するシェルスクリプトを書きます。
  4. cronによる自動実行:毎日・毎週など、決まった時間にスクリプトを自動実行させます。

3. 事前準備

設定にあたり、以下の環境が整っていることを確認してください。

  • Linux VPS(Ubuntu 22.04 / 24.04 等)へのSSHアクセス権限
  • バックアップ先となるGoogleアカウント(Googleドライブの空き容量)
  • ローカルPC(Windows/Mac:rcloneの認証トークンを一時的に取得するために使用します)

以下のイラストのようにローカルPCを使ってgoogle driveとの認証をトークンを使って進めていきます。

クラウドへのトークンを使った認証の流れ

4. 設定手順

ステップ 1:rclone のインストール

VPSにSSHで接続し、以下のコマンドを実行して最新版のrcloneをインストールします。

sudo apt update
sudo apt install -y rclone

ステップ 2:Googleドライブとの連携設定

rcloneの初期設定コマンドを実行します。対話式のメニューが表示されるので、指示に従って進めます。

rclone config

設定中の主な選択肢は以下の通りです:

  • No remotes found, make a new one? n) New remote を選択(新しい接続先を作る)
  • Enter name for new remote. 名前を「gdrive」などに設定
  • ストレージタイプの一覧から Google Drive(通常は「drive」)の番号を選択
  • client_id / client_secret は空欄のままエンター(デフォルトを使用する場合)
  • scope で 1 (Full access to all files) を選択
  • service_account_file は空欄のままエンター
  • Edit advanced config は n (No)
  • Use auto config? は n (No) ※VPS上にブラウザがないため
  • 表示されたrclone authorize “drive” “xxxxxxxxxxxx”を控えておきます

ここからローカルPCで作業します。

rcloneのインストーラーをダウンロードするページのスクリーンショット
  • ダウンロードしたzipファイルを解凍します。
  • 全て展開してフォルダを開き、エクスプローラーの何もない部分を右クリックしてターミナルで開くを選択(これでそのフォルダを開いた状態でコマンドプロンプトが起動します)
  • コマンドプロンプトに先ほどVPSで取得したトークンを含む以下のコマンドを入力します。
rclone authorize "drive" "xxxxxxxxxxxx"
  • 自動的にブラウザが開いて認証画面になるので許可します。
  • ターミナルに戻り、表示された Paste the following into your remote machine —> の先の部分をコピーします。

ここからもう一度VPSのターミナルに戻ります。

  • config_token>に先ほどローカルで取得したトークンをペーストします。
  • Configure this as a Shared Drive (Team Drive)? no
  • Keep this “gdrive” remote? y
  • q) Quit configを選択して終了します。

🚀 疎通テストをしてみましょう

通常の画面に戻ったら、本当にGoogleドライブと繋がっているか、以下のコマンドをVPSで叩いてテストしてみてください。

rclone lsd gdrive:

もしGoogleドライブのマイドライブ内にあるフォルダ一覧がずらっと表示されれば、設定は成功しています。

ステップ 3:バックアップスクリプトの作成

指定したディレクトリを圧縮(tar.gz形式)し、Googleドライブにアップロードするスクリプトを作成します。ここでは /home/user/wp-backup.sh として作成します。

mkdir -p /home/user/backup/files
sudo nano /home/user/backup/wp-backup.sh

以下の内容のバックアップ作成スクリプトを書きます。

パスワードやユーザー名などは適宜変更してください。

#!/bin/bash
# --- 設定エリア ---
SAVE_DIR="/home/user/backup/files"                     # 一時保存先
GDRIVE_DIR="gdrive:Backup_WordPress"                    # Googleドライブ上のフォルダ名
DATE=$(date +%Y%m%d_%H%M%S)
RETENTION_DAYS=7                                        # 7日分保持
RCLONE_CONF="/home/user/.config/rclone/rclone.conf"     # ユーザーの設定ファイルを指定
# 一時保存フォルダがなければ作成
mkdir -p $SAVE_DIR
echo "--- バックアップ開始: $DATE ---"
# 1. MySQLのデータベースバックアップ (Docker経由)  your-passwordをパスワードとしています
docker exec wordpress_db mysqldump -u root -pyour-password wordpress > $SAVE_DIR/wp_db_$DATE.sql
# 2. WordPressデータディレクトリの圧縮 (コンテナ内から直接吸い出し)
docker exec wordpress_app tar -czf - -C /var/www/html . > $SAVE_DIR/wp_files_$DATE.tar.gz
# 3. Googleドライブへ同期(転送) ※設定ファイルを明示的に指定
rclone --config $RCLONE_CONF copy $SAVE_DIR $GDRIVE_DIR
# 4. VPS内の一時ファイルを削除
rm -f $SAVE_DIR/*
# 5. Googleドライブ内の古いバックアップを自動削除 ※設定ファイルを明示的に指定
rclone --config $RCLONE_CONF delete --min-age ${RETENTION_DAYS}d $GDRIVE_DIR
echo "--- バックアップ完了 ---"

作成後、スクリプトに実行権限を付与します。

sudo chmod +x /home/user/backup/wp-backup.sh

手動でスクリプトをテストしてみます

sudo /home/user/backup/wp-backup.sh

バックアップ完了が出力されて実際のgoogle driveに新しくバックアップフォルダが生成されていればOKです。

ステップ 4:cronによる自動実行設定

毎日深夜3時にこのスクリプトを自動実行するように設定します。

sudo crontab -e

ファイルの末尾に以下の1行を追加して保存します。

0 23 * * * /home/user/backup/wp-backup.sh > /home/user/backup/backup.log 2>&1

毎日23時0分に、このバックアップスクリプトを自動的に実行します。

💡 ワンポイント解説
/dev/null 2>&1(ログを捨てる設定)でも動作しますが、万が一失敗した際に原因が追えるよう、上記のように /home/user/backup/backup.log 2>&1 で、ログを出力させる設定にしておくのがおすすめです。

サーバーのタイムゾーンについて

サーバーのタイムゾーン設定(JSTかUTCか)によって、指定する数字が変わります。

1. 0 23 * * * の意味の違い

  • サーバーがJST(日本時間)に設定されている場合
    • 日本時間の23:00 に実行されます。
  • サーバーがUTCに設定されている場合
    • UTCの午前23:00(=日本時間の8:00) に実行されます。

2. 日本時間23:00(夜11時)に実行したい場合の設定

サーバーのタイムゾーンに合わせて、以下のように書き換えてください。

サーバーが JST(日本時間)の場合

そのまま「23時」を指定します。

0 23 * * * /home/user/backup/wp-backup.sh > /home/user/backup/backup.log 2>&1

サーバーが UTC の場合

日本時間から 9時間を引いた時刻(14:00 UTC) を指定します。

コード スニペット

0 14 * * * /home/user/backup/wp-backup.sh > /home/user/backup/backup.log 2>&1

補足(サーバーのタイムゾーン確認コマンド) VPSのタイムゾーンがどちらになっているかわからない場合は、端末で date コマンドを実行して確認できます。末尾に JST と出れば日本時間、UTC と出れば協定世界時です。

5. 注意点と運用アドバイス

項目注意すべきポイント 
容量制限Googleドライブの無料枠(15GB)を超えないよう、スクリプト内の世代管理(–min-age)で不要な古いファイルを削除するように設定してください。
セキュリティバックアップデータに個人情報や機密データが含まれる場合は、tar圧縮時に暗号化(gpgやopenssl等)を挟むことを推奨します。
データベースMySQL/PostgreSQL等のデータベースをバックアップする場合は、直接ファイルを圧縮するのではなく、事前に mysqldump 等でSQLを書き出してから圧縮するようにしてください。

6. まとめ

無料VPSはコストパフォーマンスに優れる一方、自己責任でのデータ管理が求められます。

今回設定した「rclone + cron」による自動バックアップを構築しておけば、予期せぬ障害が発生しても短時間でサイトを復旧できます。自分のような悔しい経験をする前に、作業時間も15〜20分程度で終わりますので、サーバーを開設したら一番最初に設定しておくことを強く推奨します!

コメント