VPSのバックアップを自動化する方法:rsyncとcronを使った実践ガイド

VPSのバックアップをrsyncとcronで自動化する方法を解説。差分バックアップ、リストア手順、セキュリティ設定も紹介。初心者でも安心の実践ガイド。

VPSバックアップrsynccron自動化リストア2026/5/25

VPSのバックアップを自動化する理由

VPS(Virtual Private Server)は、Webサイトやアプリケーションの運用に欠かせない環境ですが、障害やミスによるデータ損失のリスクがあります。手動バックアップは時間がかかり、忘れがちです。そこで、rsynccronを組み合わせることで、バックアップを自動化し、安全かつ効率的にデータを保護できます。

この記事では、VPS上のデータをリモートサーバーに差分バックアップする自動化設定を、具体的なコマンドとともに解説します。

必要なもの

  • VPS(例: Ubuntu 20.04/22.04)
  • バックアップ先のサーバー(別のVPSや自宅NASなど)
  • SSH接続の知識
  • 管理者権限(sudo)
  • ステップ1: rsyncのインストールと基本設定

    まず、両方のサーバーにrsyncがインストールされていることを確認します。

    sudo apt update
    sudo apt install rsync -y
    

    rsyncはファイルの差分のみを転送するため、初回以降のバックアップが高速です。

    SSH鍵認証の設定

    パスワードなしでrsyncを実行するために、SSH鍵認証を設定します。

  • バックアップ元のVPSで鍵ペアを生成します(すでにある場合はスキップ)。
  • ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_backup -N ""
    
  • 公開鍵をバックアップ先サーバーにコピーします。
  • ssh-copy-id -i ~/.ssh/id_rsa_backup.pub user@backup-server
    
  • 接続確認
  • ssh -i ~/.ssh/id_rsa_backup user@backup-server
    

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

    バック元のVPSで、バックアップを実行するスクリプトを作成します。

    sudo nano /usr/local/bin/backup.sh
    

    以下の内容を記述します。

    #!/bin/bash
    

    <h1>バックアップ元ディレクトリ(例: /var/www)</h1> SOURCE_DIR="/var/www"

    <h1>バックアップ先のサーバー情報</h1> REMOTE_USER="user" REMOTE_HOST="backup.example.com" REMOTE_DIR="/backup/vps"

    <h1>除外リスト(必要に応じて)</h1> EXCLUDE_FILE="/etc/rsync/exclude.txt"

    <h1>rsyncコマンド</h1> rsync -avz --delete -e "ssh -i /root/.ssh/id_rsa_backup" \ --exclude-from="$EXCLUDE_FILE" \ $SOURCE_DIR $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR

    <h1>終了コード確認</h1> if [ $? -eq 0 ]; then echo "$(date): Backup successful" >> /var/log/backup.log else echo "$(date): Backup failed" >> /var/log/backup.log fi

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

    sudo chmod +x /usr/local/bin/backup.sh
    

    除外ファイルの設定(オプション)

    キャッシュや一時ファイルを除外したい場合、除外リストを作成します。
    sudo nano /etc/rsync/exclude.txt
    

    例:

    /cache/*
    /tmp/*
    *.log
    

    ステップ3: cronジョブの設定

    cronを使って定期的にスクリプトを実行します。

    sudo crontab -e
    

    以下の行を追加します。例では毎日午前3時に実行。

    0 3 * * * /usr/local/bin/backup.sh
    

    設定を保存して終了します。cronが正しく動作しているか確認するには、ログファイルをチェックします。

    cat /var/log/backup.log
    

    ステップ4: リストア手順

    バックアップからの復元は、rsyncを逆方向に実行します。

    リストア用スクリプトの例

    #!/bin/bash
    

    <h1>リストア元(バックアップサーバー)</h1> REMOTE_USER="user" REMOTE_HOST="backup.example.com" REMOTE_DIR="/backup/vps/var/www"

    <h1>リストア先(元のVPS)</h1> RESTORE_DIR="/var/www"

    rsync -avz --delete -e "ssh -i /root/.ssh/id_rsa_backup" \ $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/ $RESTORE_DIR

    注意: リストア先のディレクトリは、既存のデータが上書きされるため、事前にバックアップを取るか、テスト環境で試すことを推奨します。

    セキュリティと注意点

  • SSH鍵のパーミッションは600に設定します。
  • バックアップ先サーバーへのアクセスは最小限に。
  • バックアップデータも暗号化を検討(例: rsync over SSHは暗号化済み)。
  • 定期的にリストアテストを行い、バックアップが正常に取得できているか確認します。
  • 発展: スナップショットバックアップ

    rsyncの--link-destオプションを使うと、増分バックアップを保持できます。詳細はman rsyncを参照。


    *この記事は実際のVPS環境での構築経験に基づいています。料金・スペックは執筆時点のものであり、最新情報は各事業者の公式サイトでご確認ください。*

    まとめ

    VPSのバックアップ自動化は、rsyncとcronの組み合わせで簡単に実現できます。この設定により、手動操作の手間を省き、データ損失のリスクを大幅に低減できます。ぜひ導入してみてください。