Linux rsync コマンド

Linux コマンド大全


rsync コマンドとは

rsync (Remote Sync) は、Linux システムにおける強力なファイル同期ツールで、ローカルまたはリモートシステム間でファイルやディレクトリを効率的に同期できます。rsync は「差分転送」アルゴリズムで知られており、ソースファイルとターゲットファイルの差分部分のみを転送するため、ファイル転送効率が大幅に向上します。

rsync の主な特徴

  1. 差分同期:変更されたファイル部分のみを転送し、帯域幅と時間を節約
  2. 属性の保持:ファイル権限やタイムスタンプなどのメタデータを保持可能
  3. 圧縮転送:データ転送時の圧縮に対応し、ネットワーク負荷を軽減
  4. 柔軟な除外:特定のファイルやディレクトリを除外可能
  5. リモート対応:SSH 経由でリモートサーバーのファイルを安全に同期

rsync 基本構文

rsync [选项] 源文件 目标文件

よく使うコマンド形式

ローカル同期:

rsync -av /path/to/source/ /path/to/destination/

ローカルからリモートへ同期:

rsync -avz /local/path/ username@remote_host:/remote/path/

リモートからローカルへ同期:

rsync -avz username@remote_host:/remote/path/ /local/path/

rsync よく使うオプションの詳細

オプション 正式名称 説明
-a --archive アーカイブモード、すべてのファイル属性を保持(-rlptgoD に相当)
-v --verbose 詳細な転送情報を表示
-z --compress 転送時にデータを圧縮
-r --recursive ディレクトリを再帰的にコピー
-l --links シンボリックリンクを保持
-p --perms ファイル権限を保持
-t --times ファイルの更新時刻を保持
-g --group ファイルのグループを保持
-o --owner ファイルの所有者を保持
-D --devices デバイスファイルを保持(スーパーユーザーのみ)
-h --human-readable 数値を人間が読みやすい形式で出力
--progress 転送進捗を表示
--delete 転送先にあるソースに存在しないファイルを削除
--exclude=PATTERN PATTERN に一致するファイルを除外
--include=PATTERN PATTERN に一致するファイルを含める

rsync 実践的な使用例

例1:ローカルディレクトリの同期

例

# /home/user/docs を /backup/docs に同期し、すべての属性を保持
rsync -av /home/user/docs/ /backup/docs/

注意:ソースディレクトリの後のスラッシュ/が重要です:

  • スラッシュあり:ディレクトリの内容を同期
  • スラッシュなし:ディレクトリ自体を同期

例2:リモートサーバーのバックアップ

例

# ローカルディレクトリをリモートサーバーに同期し、圧縮を使用
rsync -avz /data/backups/ user@example.com:/remote/backups/

例3:除外オプション付きの同期

例

# 同期するが、.tmp ファイルと log ディレクトリを除外
rsync -av --exclude='*.tmp' --exclude='log/' /source/ /destination/

例4:両端を完全に一致させる(転送先の余分なファイルを削除)

例

rsync -av --delete /source/ /destination/

rsync 高度な使い方

1. SSH でカスタムポートを使用

例

rsync -avz -e 'ssh -p 2222' /local/path/ user@host:/remote/path/

2. 帯域幅の制限(500KB/s に制限)

例

rsync -avz --bwlimit=500 /source/ /destination/

3. 部分転送(100KB より大きいファイルのみ転送)

例

rsync -av --min-size=100K /source/ /destination/

4. 定期バックアップスクリプト

例

#!/bin/bash
rsync -avz --delete /important/data/ backup@server:/backups/data/
echo "Backup completed at $(date)" >> /var/log/backup.log

rsync よくある質問と回答

Q1: rsync と scp の違いは何ですか?

  • rsync:差分同期で、差分部分のみを転送するため、定期バックアップに適しています
  • scp:毎回全量転送するため、一度きりのファイル転送に適しています

Q2: 中断した rsync 転送を再開するには?

使用する--partialオプションで、部分的に転送されたファイルを保持します:

例

rsync -av --partial /source/ /destination/

Q3: rsync が何を行うかを実際に実行せずに確認するには?

使用する-n(dry-run) オプション:

例

rsync -avn /source/ /destination/

Q4: rsync の転送速度を向上させるには?

  1. 使用する-zオプションで圧縮を有効にする
  2. 使用する--compress-level=N圧縮レベルを調整(1-9)
  3. チェックサム計算を無効にする(信頼できるネットワークのみ):--no-checksum

ベストプラクティスの推奨事項

  1. テスト先行:使用する-nオプションでシミュレーション実行を先に行う
  2. ログ記録:追加する--log-file=rsync.log操作を記録
  3. 権限管理:使用を検討する--chmodファイル権限を統一
  4. 定期タスク:crontab と組み合わせて自動バックアップを実現
  5. 安全な転送:常に SSH 経由でリモート転送を行う

まとめ

rsync は Linux システム管理者と開発者にとって必須のツールです。これを習得すると以下のことが可能になります:

  • ローカルおよびリモートのファイル同期を効率的に実行
  • 自動バックアップを実現
  • ネットワークデータ転送を最適化
  • ファイルシステムの整合性を維持

この記事の学習を通じて、rsync の基本的な使い方と高度なテクニックを習得できたはずです。実際の作業で練習を重ね、rsync のさらに多くの強力な機能を徐々に試してみることをお勧めします。

Linux コマンド大全

その他の拡張