
リモート ホスト (ssh://) をソース/宛先として rsync を実行する場合と、ローカル パスを使用して sshfs 経由でマウントされたディレクトリを共有する場合とで違いはありますか?
スイッチを使用せずに、rsync アーカイブ モードとリモート ホスト パス (ssh) を使用するだけで、セキュリティやコピー速度に関して違いが生じる可能性があります。ソースと宛先のみを使用した sshfs マウントでも同様です (暗号の変更はなく、デフォルトのみです)。
答え1
SSHFS は便利ですが、rsync や、より一般的には同期ツールとはうまく連携しません。
最大の問題は、SSHFS が rsync のパフォーマンス最適化をほとんど無効にしてしまうことです。特に、中規模から大規模のファイルの場合、rsync はファイルが変更されたことを検出すると、変更された部分だけを転送するために、両側のファイルの部分のチェックサムを計算します。これは、ネットワーク帯域幅がディスク帯域幅よりも大幅に小さい場合にのみ最適化されますが、通常はその通りです。しかし、SSHFS の場合、「ディスク」帯域幅は実際にはネットワーク帯域幅であるため、rsync はコピーするものを決定するためにファイル全体を読み取らなければなりません。実際、ローカル コピーの場合 (rsync に関する限り、片側が SSHFS 上にある場合でもローカル コピーです)、rsync はファイル全体をコピーするだけです。
SSHFS は、小さなファイルが多数ある場合、パフォーマンスにも悪影響を及ぼします。rsync は、少なくとも各ファイルのメタデータをチェックして、変更されているかどうかを判断する必要があります。SSHFS では、ファイルごとにネットワーク ラウンド トリップが必要になります。SSH 経由の rsync では、両側が並行して作業し、情報を一括転送できるため、はるかに高速です。
アクセス制限に関しては、SSHFS では SFTP アクセスが必要ですが、rsync ではシェル経由でコード (具体的には rsync プログラム) を実行する機能が必要です。ユーザーがシェル アカウントを持っていない場合、およびを含むいくつかのプログラムのみを実行できる特別なシェルを持つアカウントを提供することは可能であり、一般的sftp-server
ですrsync
。SCP 用のシェルは必要ですか?
新しいファイルのみをコピーしていて、ファイルの数がそれほど多くない場合は、パフォーマンスに大きな違いはありません。
SSHFSはファイルシステムがマウントされたときにSSH接続を確立し、アンマウントされるまでその接続を維持します。Rsyncは実行するたびに新しい接続を確立しますが、多重化機能と単一のメイン接続へのピギーバック毎回認証する手間を省くためです。
SSHFS は FUSE ファイルシステムであるため、従来の Unix メタデータと ACL のみをサポートします。rsync は拡張属性を転送できます ( を使用する必要があります。rsync -aAX
プレーンでは-a
従来の Unix メタデータのみが保持されることに注意してください)。
答え2
あなたの主な質問に答えると、違いはあります。sshfs
安全なチャネルを介してリモートファイルにアクセスできるようにするための既存の接続があり、ssh経由のrsyncでは、その安全なチャネルが設定されます。リモートrsyncインスタンスと通信する。
2 番目の質問にお答えします。リモート システム上の rsync は、同期する必要のないファイルを見つける際に高度な情報を提供するため、すべてのインスタンスではないにしても、ほとんどのインスタンスで ssh 経由の rsync の方が高速になりますが、主な理由は、その情報を収集するためにローカル rsync と並行して実行されるためです。
両方の方法のセキュリティは、SSH パラメータ (キーの長さ、アルゴリズム) の構成が同じであると仮定すると、同じです。ソース システムと宛先システムのデフォルトは、それらのシステム上のディストリビューションの組み合わせによって異なります。