はじめに
サーバ運用や開発環境において、バックアップの自動化は必須の対策です。
人的ミスや障害、誤削除はいつ発生するかわからず、「定期的かつ確実に」バックアップを取得できる仕組みが求められます。
本記事では、Linux環境で広く使われている rsync を活用し、
- 効率的なバックアップの仕組み
- スクリプトによる自動化
- cron を用いた定期実行
までを、実践的に解説します。
rsyncとは
rsync は、ファイルやディレクトリを高速・効率的に同期するためのツールです。
rsyncの主な特徴
- 差分のみを転送(高速・省リソース)
- パーミッション・所有者・タイムスタンプを保持可能
- ローカル/リモート(SSH)両対応
- バックアップ用途に最適
Linuxのバックアップでは、事実上の標準ツールと言ってよいでしょう。
rsyncの基本構文
rsync [オプション] コピー元 コピー先
よく使うオプション
| オプション | 説明 |
|---|---|
-a | アーカイブモード(再帰+属性保持) |
-v | 詳細表示 |
-h | 人間に読みやすい形式 |
--delete | コピー元に存在しないファイルを削除 |
--exclude | 特定ファイル/ディレクトリを除外 |
ローカルバックアップの基本例
ホームディレクトリをバックアップする例
rsync -avh /home/user/ /backup/home/user/
/home/user/の末尾スラッシュに注意
→ 中身のみをコピーする指定
不要ファイルを除外する
キャッシュや一時ファイルはバックアップ対象から除外するのが一般的です。
rsync -avh \
--exclude=".cache" \
--exclude="*.tmp" \
/home/user/ /backup/home/user/
削除を同期させたミラーバックアップ
コピー元で削除されたファイルも、バックアップ先から削除したい場合は --delete を使用します。
rsync -avh --delete /home/user/ /backup/home/user/
※ 誤操作の影響が大きいため、本番利用前に十分な確認が必要です。
SSH経由でのリモートバックアップ
リモートサーバへバックアップする例
rsync -avh -e ssh /var/www/ backupuser@backup-server:/data/www/
SSH鍵認証を設定しておくことで、完全自動化が可能になります。
バックアップ用シェルスクリプト作成
例:バックアップスクリプト
#!/bin/bash
SRC="/home/user/"
DEST="/backup/home/user/"
LOG="/var/log/backup_rsync.log"
rsync -avh --delete \
--exclude=".cache" \
"$SRC" "$DEST" >> "$LOG" 2>&1
実行権限を付与
chmod +x backup_rsync.sh
cronで定期実行する
毎日2時にバックアップを実行する例
crontab -e
0 2 * * * /path/to/backup_rsync.sh
cron実行時は、環境変数やパスが最小限である点に注意してください。
フルパス指定が推奨されます。
ログと運用上の注意点
ログ管理
- ログファイルが肥大化しないよう logrotate を検討
- 異常終了時の検知(exit code確認)
運用のベストプラクティス
- 本番データとは別ディスク/別サーバに保存
- 定期的なリストアテストを実施
--delete使用時は事前に--dry-runで確認
rsync -avh --delete --dry-run /home/user/ /backup/home/user/
まとめ
rsyncを活用することで、Linux環境のバックアップは
- 高速
- シンプル
- 自動化しやすい
というメリットを得られます。
cronと組み合わせることで、人に依存しない安全なバックアップ運用が実現可能です。
ぜひ自分の環境に合わせたスクリプトを作成し、万一に備えた体制を整えてください。

