rsyncは差分転送で効率的なバックアップを実現するLinux標準コマンドです。–delete は必ず –dry-run で確認してから実行してください。
主要オプション
| オプション | 説明 |
|---|---|
| -a | アーカイブモード(パーミッション・タイムスタンプ保持) |
| -v | 詳細表示 |
| -z | 転送時に圧縮(ネットワーク転送時に有効) |
| –delete | 送信元にないファイルを送信先から削除(要注意) |
| –dry-run | 実際には実行しない(テスト用) |
| –exclude | 除外パターンを指定 |
ローカルバックアップ
# 基本的なバックアップ
$ sudo rsync -avh /var/www/ /backup/www/
# --delete は必ず --dry-run で確認してから実行
$ sudo rsync -avh --dry-run --delete /var/www/ /backup/www/
$ sudo rsync -avh --delete /var/www/ /backup/www/
# ログ・キャッシュを除外
$ rsync -avh --exclude="*.log" --exclude="tmp/" /var/www/ /backup/www/リモートサーバーへのバックアップ
# SSH経由でリモートにバックアップ
$ rsync -avzh -e "ssh -p 2222 -i ~/.ssh/backup_key" /var/www/ backup@remote:/backup/www/
# 帯域制限(本番サーバーへの影響を抑える)
$ rsync -avzh --bwlimit=10000 /var/www/ backup@remote:/backup/世代管理バックアップ(–link-dest)
–link-dest でハードリンクを使った差分世代管理を実現します。変更されたファイルのみ実体を持ち、ストレージを大幅に節約できます。
#!/bin/bash
set -euo pipefail
BACKUP_SRC=/var/www
BACKUP_DST=/backup
DATE=$(date +%Y-%m-%d_%H%M%S)
LATEST="$BACKUP_DST/latest"
rsync -avh --delete \
--link-dest="$LATEST" \
"$BACKUP_SRC/" "$BACKUP_DST/$DATE/"
# latest シンボリックリンクを更新
ln -sfn "$BACKUP_DST/$DATE" "$LATEST"
# 30日以上前のバックアップを削除
find "$BACKUP_DST" -maxdepth 1 -type d -name "????-??-??_*" -mtime +30 -exec rm -rf {} +# cron で毎日深夜2時に自動実行
$ sudo crontab -e
0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
# 定期的にリストアテストを実施
$ sudo rsync -avh /backup/latest/ /tmp/restore-test/まとめ
- -a でパーミッション・タイムスタンプを保持したアーカイブコピー
- –delete は必ず –dry-run で確認してから実行する
- ネットワーク転送時は -z で圧縮。ローカルは不要
- –link-dest でハードリンクを使った効率的な差分世代管理を実現
- バックアップは自動化するだけでなく、定期的にリストアテストも実施する
📋 Linuxサーバー運用・管理チェックリスト完全版でPhase 2の全要点を確認できます。



コメント