`scp` と `rsync` の違いは何ですか? 質問する

`scp` と `rsync` の違いは何ですか? 質問する

についての記事Ghostブログの設定scpローカルマシンからリモートサーバーにコピーするには次のように使用します:

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

しかし、Railscast 339: Chef Solo の基礎scp反対方向(リモート サーバーからローカル マシンへ)にコピーする場合に使用します。

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

同じ Railscast で、著者がファイルをリモート サーバーにコピーする場合 (最初の例と同じ方向)、次を使用しますrsync

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

両方向にコピーするrsync場合、なぜ コマンドを使用するのですか?とどう違うのですか?scpscprsync

ベストアンサー1

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

scp基本的に、ソース ファイルを読み取り、宛先に書き込みます。ローカルまたはネットワーク経由で、単純な線形コピーを実行します。

rsyncローカルまたはネットワーク経由でファイルをコピーすることもできますが、特別なデルタ転送アルゴリズム操作を大幅に高速化するためのいくつかの最適化。呼び出しを検討してください。

rsync A host:B
  • rsyncABの両方のファイル サイズと変更タイムスタンプをチェックし、一致する場合はそれ以上の処理をスキップします。

  • 宛先ファイルBがすでに存在する場合、デルタ転送アルゴリズムにより、ABの差分のみがネットワーク経由で送信されます。

  • rsync一時ファイルTにデータを書き込み、宛先ファイルBをTに置き換えて、 Bを使用している可能性のあるプロセスに対して更新が「アトミック」に見えるようにします。

それらのもう 1 つの違いは、呼び出しに関するものです。rsyncには多数のコマンド ライン オプションがあり、ユーザーは動作を微調整できます。 複雑なフィルター ルールをサポートし、バッチ モード、デーモン モードなどで実行されますscp。 スイッチはわずかしかありません。

要約すると、scp日常的なタスクに使用します。対話型シェルで時々入力するコマンドです。使い方が簡単なので、このような場合にはrsync最適化はあまり役に立ちません。

cronジョブなどの繰り返しタスクの場合はを使用しますrsync。前述のように、複数回の呼び出しではすでに転送済みのデータを利用するため、非常に高速に実行され、リソースを節約できます。これは、ネットワーク上で 2 つのディレクトリを同期させるのに最適なツールです。

また、大きなファイルを扱う場合は、オプションrsyncと一緒に使用してください-P。転送が中断された場合、コマンドを再発行することで停止したところから再開できます。Sid Kshatriya の答え

最後に、rsync://このプロトコルはプレーン HTTP に似ていることに注意してください。つまり、暗号化されておらず、整合性チェックも行われません。rsync本当に何をしているのかわかっているのでなければ、必ず rsync プロトコルではなく、必ず SSH 経由で使用してください (上記の質問の例のように)。 は、scp整合性と機密性の両方を保証する基盤となるトランスポート メカニズムとして SSH を常に使用します。これが 2 つのユーティリティのもう 1 つの違いです。

おすすめ記事