rsyncの代わりにscpを使用する理由はありますか?


62

scp代わりに使用する理由はありrsyncますか?私はscp二度と使用する理由を見ることができず、rsyncすべてをscp行い、より安全に(シンボリックリンクなどを保存できます)します。


6
簡単な答え:いいえ。scpは決して有害ではありません
シャドゥール

2
@Shadur scpは、デフォルトで既存のターゲットファイルを上書きするという点で有害です。rsyncも同じですが、少なくとも、で起こりうるダメージを制限することができます-u
ジル 'SO-悪

3
@Gilles他のツールと同様に、安全に使用するには、ツールの機能とその方法を理解する必要があります。
アレックスチェンバレン

8
その意味で、定期的cpとするrm「有害」とみなされるであろう-あなたは「私は愚かな何かをすれば私をネジことができます」などの「有害な」定義した場合、rsync任意のあまり有害ではありません。
シャドゥール

1
rsyncインストールされていないシステムでrsyncは、使用は(明らかに)不可能です。
クサラナナンダ

回答:


46

scpは、セキュアなSSH接続を介して1つのマシンからリモートマシンにファイルをコピーするcpのような方法を提供します。

rsyncを使用すると、リモートフォルダーを同期できます。

これらは異なるプログラムであり、両方とも用途があります。scpは常に安全ですが、rsyncはSSH経由で安全に移動する必要があります。


9
また、もう一方の端にrsyncをインストールする必要があります。
-ckhan

3
@ckhan、いや、反対側に何もインストールせずにコピーすることはできません。効率が低下します。
mikebloch

2
scpのシンプルさが好きです。
アレックスチェンバレン

2
@mikeblochどうやってやるの?それは新しい機能ですか?バージョン3.0.9を使用してこれを試しました。そして、それrsyncはリモートで見つけることができないと不平を言いました。
アレクシオス

1
@mikebloch、チェックサム計算を行うにはサーバーにインストールする必要があり、サーバーに大量のCPU負荷を追加する可能性があります。これが、ほとんどの大規模サイトでサポートされていない理由でありzsync、代替手段として作成された理由です。
-psusi

19

主なものの1つ(誰も言及しなかったと思います)は、大量のデータやファイルを転送している場合、何らかの理由で転送が完了前に切断されると、rsyncは中断したところからそれを取得します。一方、scpはそうではありません。

1つまたはいくつかのファイルまたはディレクトリを転送する場合は、scpを使用します。マルチGBサイズのデータ​​のrsyncに移動します。


3
--partial大きなファイルを転送するときにフラグが役立つことを追加する価値があるかもしれません。 rsyncそのファイルを再度開始するのではなく、ファイル内で中断したところから再開します。
フラップ

@Flupが述べたように、-partialオプションを使用しない限り、rsyncは、転送中のファイルを再開しません。これらのファイルは、デフォルトでターゲットディレクトリに隠されています。--partial-dirを使用して、これらすべてのファイルを単一のディレクトリに配置できます。
レスターチャン

まあ、rsync -vP username@host:/path/to/file .これも行います。Stackoverflow
Devesh Sainiで

9

rsyncを:転送のデルタ(その使用デルタ転送アルゴリズムの間を):

  1. ローカルおよびリモートホスト

scp:以下の間でファイル全体を転送します

  1. ローカルおよびリモートホスト
  2. リモートおよびリモートホスト

概要:scp2つのリモートホスト間でファイルを転送できますrsyncが、サポートしていません。


rsyncは、2つのリモートホスト間でファイルを転送できます。実際、rsync a host:bはと同等scp a host:bです。
brandizzi

それは私が書いたものです、rsyncはローカルホストとリモートホスト間でデルタを転送できますが、scpはそれだけに限定されず、2つのリモートホスト間でデルタを転送できます。@brandizzi
Devesh Saini

2

Webhosting TalkのユーザーChrisは次のように書いています。

rsync各端のファイルを比較し、変更されたファイルの変更された部分のみを転送します。最初にファイルを転送すると、ほとんどのように動作しscpますが、2番目の転送では、ほとんどのファイルが変更されないため、プッシュされるデータはに比べてはるかに少なくなりますscp。また、失敗した転送を再開する便利な方法でもあります。同じコマンドを再発行するだけで、前に中断したところから再開しますがscp、最初から再開します。


0

scp引数が少ないため、使用が簡単です。rsync単一のファイルを転送するだけでなく、scpを使用してmyselvをキャッチします。おそらく、rsyncのエイリアスを定義するのが面倒です... ;-)


1
うーん、なぜそうですか?rsync a host:bscp a host:b、と同数の引数です。
mikebloch

1
@mikeblochさらに2文字を入力します... ;-)以前は、適切な結果を得るために「-e ssh -a」を指定する必要がありました。「-e ssh」がデフォルトになったので、これは別のゲームかもしれません。
ニルス

0

https://gist.github.com/KartikTalwar/4393116の @tomruniaのクレジット

rsync -aHAXxv --numeric-ids --delete --progress \
  -e "ssh -T -c aes128-gcm@openssh.com -o Compression=no -x" \
  [source_directory] user@hostname:[target_directory]/

に注意して--deleteください。外部のファイルを宛先ディレクトリに保持する場合は使用しないでください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.