Open1

rsyncコマンド

ひでひで
  1. rsyncとは:
  • ファイルやディレクトリを同期するためのコマンド
  • 差分のみを転送するので高速
  • リモートマシンとのファイル転送にも使える
  1. 基本的な使い方:

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/
  1. よく使うオプション解説:
-a  : アーカイブモード(権限や時刻なども保持)
-v  : 詳細な情報を表示
-r  : 再帰的にコピー(サブディレクトリも含む)
-z  : 転送時にデータを圧縮
-h  : 人間が読みやすい形式で表示
--delete : 転送元にないファイルを転送先から削除
  1. 実践的な使用例:

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/
  1. よくある使用シーン:

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/
  1. 安全な使用方法:

A. 実行前の確認:

# dry-run(実際には実行しない)
rsync -avh --dry-run ~/Documents/ /backup/documents/

B. SSHを使用した安全な転送:

# SSH経由での転送
rsync -avz -e ssh /local/data/ user@remote:/backup/
  1. バックアップスクリプトの例:
#!/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 {} \;
  1. トラブルシューティング:

よくあるエラーと対処法:

# 権限エラー
sudo rsync -av /source/ /destination/

# 接続エラー
rsync -av -e "ssh -p 2222" /source/ user@remote:/destination/

# ディスク容量確認
df -h
  1. LPIC試験でよく出題されるポイント:
  • 基本オプション(-a, -v, -r, -z)の意味
  • リモート同期の方法
  • 除外オプションの使用方法
  • バックアップ戦略での活用
  1. 重要な注意点:
  • パスの最後のスラッシュ(/)の有無で動作が変わる
  • --deleteオプションは慎重に使用
  • 大量のファイル転送時はネットワーク負荷に注意
  1. パフォーマンス最適化:
# 圧縮転送(低速回線用)
rsync -avz /source/ /destination/

# 高速ネットワーク用(圧縮なし)
rsync -av /source/ /destination/

# 並列転送
rsync -av --parallel=4 /source/ /destination/