Open1
rsyncコマンド

- rsyncとは:
- ファイルやディレクトリを同期するためのコマンド
- 差分のみを転送するので高速
- リモートマシンとのファイル転送にも使える
- 基本的な使い方:
A. ローカルでの同期:
# 基本形式
rsync [オプション] 元のパス/ 保存先パス/
# 具体例(ドキュメントのバックアップ)
rsync -av ~/Documents/ /backup/documents/
B. リモートでの同期:
# リモートから取得
rsync -av user@remote:/home/user/data/ /local/data/
# リモートへ送信
rsync -av /local/data/ user@remote:/home/user/data/
- よく使うオプション解説:
-a : アーカイブモード(権限や時刻なども保持)
-v : 詳細な情報を表示
-r : 再帰的にコピー(サブディレクトリも含む)
-z : 転送時にデータを圧縮
-h : 人間が読みやすい形式で表示
--delete : 転送元にないファイルを転送先から削除
- 実践的な使用例:
A. 基本的なバックアップ:
# ホームディレクトリのバックアップ
rsync -avh ~/Documents/ /backup/documents/
# 進捗状況を表示
rsync -avh --progress ~/Documents/ /backup/documents/
B. 除外オプションの使用:
# 特定のファイルを除外
rsync -av --exclude="*.log" ~/Documents/ /backup/documents/
# 複数のパターンを除外
rsync -av --exclude="*.tmp" --exclude="*.log" ~/Documents/ /backup/
- よくある使用シーン:
A. 定期バックアップ:
# 差分のみバックアップ
rsync -avh --delete ~/Documents/ /backup/documents/
# 日付付きディレクトリにバックアップ
rsync -avh ~/Documents/ /backup/documents-$(date +%Y%m%d)/
B. サーバー間の同期:
# Webサーバーのコンテンツ同期
rsync -avz --delete /var/www/ backup-server:/var/www/
- 安全な使用方法:
A. 実行前の確認:
# dry-run(実際には実行しない)
rsync -avh --dry-run ~/Documents/ /backup/documents/
B. SSHを使用した安全な転送:
# SSH経由での転送
rsync -avz -e ssh /local/data/ user@remote:/backup/
- バックアップスクリプトの例:
#!/bin/bash
# 日次バックアップスクリプト
SOURCE_DIR="/home/user/documents/"
BACKUP_DIR="/backup/"
DATE=$(date +%Y%m%d)
# バックアップの実行
rsync -avh \
--delete \
--exclude="*.tmp" \
"$SOURCE_DIR" \
"$BACKUP_DIR/backup-$DATE/"
# 古いバックアップの削除(30日以上前)
find "$BACKUP_DIR" -type d -name "backup-*" -mtime +30 -exec rm -rf {} \;
- トラブルシューティング:
よくあるエラーと対処法:
# 権限エラー
sudo rsync -av /source/ /destination/
# 接続エラー
rsync -av -e "ssh -p 2222" /source/ user@remote:/destination/
# ディスク容量確認
df -h
- LPIC試験でよく出題されるポイント:
- 基本オプション(-a, -v, -r, -z)の意味
- リモート同期の方法
- 除外オプションの使用方法
- バックアップ戦略での活用
- 重要な注意点:
- パスの最後のスラッシュ(/)の有無で動作が変わる
- --deleteオプションは慎重に使用
- 大量のファイル転送時はネットワーク負荷に注意
- パフォーマンス最適化:
# 圧縮転送(低速回線用)
rsync -avz /source/ /destination/
# 高速ネットワーク用(圧縮なし)
rsync -av /source/ /destination/
# 並列転送
rsync -av --parallel=4 /source/ /destination/