導入
このブログのキャッチコピーは「未来の自分のための技術メモ、時々あなたのためのヒント。」ですが、今回は未来のあなたが「あの時やっておいて本当に良かった!」と心から思うであろう、サーバーの自動バックアップに関するヒントです。
サーバー運用において、バックアップは車の任意保険のようなものです。普段はその価値を感じにくいですが、万が一の事故(ハードウェア故障、操作ミス、サイバー攻撃など)が起きた時、バックアップがあるかないかで、その後の運命が天国と地獄ほどに分かれます。
この記事では、Linuxの標準的なツールだけを使って、安全で効率的な自動バックアップシステムを構築する方法を、初心者の方にも分かりやすく解説します。
バックアップの全体像:本番機からバックアップ機へ
今回構築するのは、「プライマリサーバー(本番機)」から「セカンダリサーバー(バックアップ機)」へ、毎日決まった時間に自動でデータをお引越しさせる仕組みです。
主な登場人物(ツール):
- SSH(公開鍵認証): 2台のサーバーがパスワードなしで安全に通信するための「合鍵」。
- rsync: ファイルやディレクトリを賢く同期してくれる「引越し業者」。
- mysqldump: データベースの中身を丸ごと書き出してくれる「梱包のプロ」。
- cron: 毎日決まった時間に作業を命令してくれる「スケジュール帳」。
Step 1: サーバー間の「信頼関係」を築く (SSH鍵認証)
自動化の第一歩は、バックアップ機が本番機に「顔パス」で入れるように設定することです。これにより、スクリプトがパスワード入力で止まることなく、スムーズに実行されます。
- バックアップ機で合鍵ペアを作る (ssh-keygen)バックアップ機でコマンドを実行し、誰にも見せない「秘密鍵」と、相手に渡す「公開鍵」のペアを作成します。
- 本番機に合鍵を渡す (authorized_keys)本番機にバックアップ専用のユーザー(例: support)を作成し、そのユーザーの「鍵置き場」(~/.ssh/authorized_keys)に、バックアップ機の公開鍵を登録します。
これで、2台のサーバー間に安全な信頼関係が生まれました。
Step 2: ファイルを賢くお引越しさせる (rsync)
次に、「引越し業者」であるrsync
を使って、ファイルを同期します。rsync
の賢いところは、毎回全てのファイルを送るのではなく、変更があったファイルだけを転送してくれる点です。これにより、時間とネットワークの「コストパフォーマンス」が非常に高くなります。
バックアップ機で実行するコマンド例:
# support@192.168.1.10(本番機) の /home/webusers/ ディレクトリを
# このサーバーの /backup/webusers/ ディレクトリに同期する
rsync -auvz --delete support@192.168.1.10:/home/webusers/ /backup/webusers/
Step 3: データベースを丸ごと梱包して送る (mysqldump)
Webサイトの見た目(ファイル)だけでなく、会員情報やブログ記事といった大切なデータが詰まったデータベースのバックアップは非常に重要です。
ここでは、SSHとパイプ(|
)というLinuxの機能を組み合わせた、少し高度ですが非常に効率的なテクニックを使います。
# 本番機でDBをダンプ&圧縮 → SSHで転送 → バックアップ機で解凍&インポート
ssh support@192.168.1.10 "mysqldump --all-databases | gzip" | zcat | mysql
この一行のコマンドは、「本番機でデータベースを梱包・圧縮しながら、そのデータをSSHトンネル経由でバックアップ機に送り、届いたそばから解凍してデータベースに流し込む」という離れ業を一気に行っています。これにより、中間のバックアップファイルをサーバー内に作る必要がありません。
Step 4: 全てを自動化する (cron)
最後に、「スケジュール帳」であるcron
に、Step 2とStep 3のコマンドを毎日決まった時間に実行するように登録します。
# crontab -e コマンドで編集
# 毎日AM 4:05にファイルバックアップを実行
5 4 * * * /path/to/rsync_backup.sh
# 毎日AM 5:05にデータベースバックアップを実行
5 5 * * * /path/to/mysql_backup.sh
まとめ
今回は、Linuxの基本的なツールを組み合わせて、安全で効率的な自動バックアップシステムを構築する方法をご紹介しました。
少し設定が複雑に感じるかもしれませんが、一度この仕組みを作ってしまえば、あとはシステムが黙々とあなたの大切なデータを守り続けてくれます。
「備えあれば憂いなし」。この記事が、あなたのサーバー運用の安心感を高める「ヒント」になれば幸いです。
コメント