scp コマンドと rsync コマンドの違い
ファイルの転送や同期を行う際に、Linux/Unix 系システムでは scp
と rsync
の2つのコマンドがよく利用されます。
この記事では、それぞれの特徴や使い分けについて、わかりやすく解説します。
概要
-
scp (Secure Copy)
- SSH を利用した暗号化転送のための単純なファイルコピーコマンド
- 一度の転送でファイルを丸ごとコピーするシンプルな仕組み
-
rsync (Remote Sync)
- 差分転送アルゴリズムを利用して、更新された部分のみを転送する効率的な同期ツール
- ローカル間、リモート間、またはその両方でファイルやディレクトリの同期が可能
主な特徴と機能の違い
項目 | scp | rsync |
---|---|---|
転送方式 | ファイル全体を転送 | 差分転送(変更部分のみ) |
速度・効率 | 転送するたびに全ファイルをコピーするため非効率的 | 更新された部分だけを転送するので高速かつ効率的 |
再開機能 | 途中で中断した転送の再開機能は基本的になし | 転送の途中で中断しても、再開が可能 |
圧縮 | オプションで SSH 圧縮機能を利用可能 | 圧縮オプション(-z)により転送データ量を削減可能 |
用途 | 単純なファイルコピー | バックアップや大規模なディレクトリ同期に最適 |
オプションの豊富さ | オプションは比較的少ない | 多数のオプション(除外パターン指定、パーミッション維持など)が利用可能 |
詳細な解説
scp コマンド
-
用途と使い方
- SSH プロトコルを利用して、リモートホストとの間で安全にファイルをコピーする。
- シンプルな構文で使いやすく、以下のようなコマンドで利用する:
scp local_file user@remote_host:/path/to/destination
-
メリット
- シンプルで直感的な操作が可能
- SSH のセキュリティをそのまま利用できる
-
デメリット
- 毎回全ファイルを転送するため、大きなファイルや大量のファイルの場合は非効率
- 中断後の再開がサポートされていない
rsync コマンド
-
用途と使い方
- ローカルとリモート間、もしくはリモート同士でファイルやディレクトリの同期を行う。
- 差分転送により、更新された部分だけを転送するため、転送量を大幅に削減できる。
- 典型的な利用例:
rsync -avz local_directory/ user@remote_host:/path/to/destination/
-
メリット
- 差分転送による高速・効率的な同期が可能
- 途中で中断しても再開可能(
--partial
オプションなど) - 多彩なオプションにより、ファイルの権限や所有者情報、シンボリックリンクなども適切に同期できる
-
デメリット
- オプションが豊富なため、初めは使い方がやや複雑に感じることもある
- シンプルな単一ファイルのコピーでは、scp と比べて若干オーバーヘッドがある可能性がある
どちらを使うべきか?
-
単純なファイルコピーや少量のファイル転送
- シンプルさと手軽さを求める場合は
scp
が適しています。
- シンプルさと手軽さを求める場合は
-
大規模なディレクトリ同期や定期的なバックアップ
- 転送量を最小限に抑えたい、または中断後の再開機能が必要な場合は
rsync
が有利です。
- 転送量を最小限に抑えたい、または中断後の再開機能が必要な場合は
まとめ
-
scp
は、SSH を利用したシンプルなファイルコピーコマンドであり、手軽に安全な転送を実現します。 -
rsync
は、差分転送を利用して効率的にファイルやディレクトリの同期を行い、再開機能や圧縮機能など、より多機能なツールです。
用途や転送するファイルの規模、ネットワークの状態に応じて、適切なコマンドを選択することが重要です。