VPSのバックアップを自動化する方法:rsyncとcronを使った実践ガイド
VPSのバックアップをrsyncとcronで自動化する方法を解説。差分バックアップ、リストア手順、セキュリティ設定も紹介。初心者でも安心の実践ガイド。
VPSのバックアップを自動化する理由
VPS(Virtual Private Server)は、Webサイトやアプリケーションの運用に欠かせない環境ですが、障害やミスによるデータ損失のリスクがあります。手動バックアップは時間がかかり、忘れがちです。そこで、rsyncとcronを組み合わせることで、バックアップを自動化し、安全かつ効率的にデータを保護できます。
この記事では、VPS上のデータをリモートサーバーに差分バックアップする自動化設定を、具体的なコマンドとともに解説します。
必要なもの
ステップ1: rsyncのインストールと基本設定
まず、両方のサーバーにrsyncがインストールされていることを確認します。
sudo apt update
sudo apt install rsync -y
rsyncはファイルの差分のみを転送するため、初回以降のバックアップが高速です。
SSH鍵認証の設定
パスワードなしでrsyncを実行するために、SSH鍵認証を設定します。
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
注意: リストア先のディレクトリは、既存のデータが上書きされるため、事前にバックアップを取るか、テスト環境で試すことを推奨します。
セキュリティと注意点
発展: スナップショットバックアップ
rsyncの--link-destオプションを使うと、増分バックアップを保持できます。詳細はman rsyncを参照。
*この記事は実際のVPS環境での構築経験に基づいています。料金・スペックは執筆時点のものであり、最新情報は各事業者の公式サイトでご確認ください。*
まとめ
VPSのバックアップ自動化は、rsyncとcronの組み合わせで簡単に実現できます。この設定により、手動操作の手間を省き、データ損失のリスクを大幅に低減できます。ぜひ導入してみてください。