1. ホーム
  2. rsync

[解決済み】`scp`と`rsync`はどう違うのですか?

2022-03-29 04:52:47

質問

に関する記事 ゴーストブログの設定 を使用するようにと書かれています。 scp を使用して、ローカルマシンからリモートサーバーにコピーしています。

scp -r ghost-0.3 root@*your-server-ip*:~/

しかし Railscast 339: シェフソロの基本 用途 scp を使うと、反対方向(リモートサーバーからローカルマシンへ)にコピーすることができます。

scp -r [email protected]:/var/chef .

同じRailscastで、筆者がリモート・サーバーにファイルをコピーしたいとき(最初の例と同じ方向)、次のように使う。 rsync :

rsync -r . [email protected]:/var/chef

なぜ rsync コマンドを使用します。 scp は両方向にコピーされるのでしょうか?どのように scp とは異なり rsync ?

解決方法は?

これらのツールの大きな違いは、ファイルのコピー方法です。

scp は、基本的にソースファイルを読み込んで、デスティネーションに書き込む。ローカルでもネットワーク経由でも、プレーンな線形コピーを実行します。

rsync も、ローカルまたはネットワーク上でファイルをコピーします。しかし、これは特別な デルタ転送アルゴリズム といくつかの最適化により、操作を大幅に高速化することができます。呼び出しを考えてみましょう。

rsync A host:B

  • rsync は、ファイルのサイズと更新のタイムスタンプをチェックするために、両方の A B というように、一致した場合はそれ以上の処理をスキップします。

  • もし、保存先ファイル B がすでに存在する場合、デルタ転送アルゴリズムは A B が送信されます。

  • rsync は、一時ファイルにデータを書き込みます T を置き換えた後、保存先のファイル B T を使用しているプロセスに対して、更新がアトミックに見えるようにするためです。 B .

もうひとつの違いは、呼び出しに関するものです。 rsync は、コマンドラインオプションが豊富で、ユーザーが動作を細かく設定することができます。複雑なフィルタールールや、バッチモード、デーモンモードなどにも対応しています。 scp は数個のスイッチしかない。

まとめると scp は、日常的なタスクに使用します。インタラクティブシェルでたまに打つようなコマンド。その方がシンプルに使えるし、そういう場合は rsync 最適化はあまり役に立ちません。

のような繰り返し行われるタスクの場合 cron を使用します。 rsync . 前述のように、複数回起動すると、すでに転送されたデータを利用して、非常に高速に実行され、リソースを節約することができます。これは、ネットワーク上で2つのディレクトリを同期させるための優れたツールです。

また、大きなファイルを扱う場合は rsync と共に -P オプションで指定します。転送が中断された場合は、コマンドを再発行することで中断したところから再開することができます。Sid Kshatriyaの 回答 .

最後に、以下の点に注意してください。 rsync:// の場合、プロトコルはプレーンなHTTPと同様で、暗号化されておらず、完全性チェックもありません。常に rsync は SSH 経由で (上記の質問の例のように)、rsync プロトコルは使わないでください。 scp は常に、完全性と機密性の両方が保証された転送メカニズムとしてSSHを使用しますので、この点も2つのユーティリティの違いです。