回答:
SSHFSは便利ですが、rsyncまたはより一般的には同期ツールとうまく連動しません。
最大の問題は、SSHFSがrsyncのパフォーマンス最適化を大幅に停止させることです。特に、中規模から大規模のファイルの場合、rsyncはファイルが変更されていることを検出すると、変更された部分のみを転送するために、ファイルの両側でチェックサムを計算します。これは、ネットワークの帯域幅がディスクの帯域幅よりも大幅に小さい場合にのみ最適化されます。しかし、SSHFSでは、「ディスク」帯域幅は実際にはネットワーク帯域幅であるため、rsyncは何をコピーするかを決定するためにファイル全体を読み取る必要があります。実際、ローカルコピー(rsyncに関する限り、どちらかの側がSSHFS上にある場合でも)では、rsyncはファイル全体をコピーするだけです。
SSHFSは、小さなファイルが多数ある場合にもパフォーマンスに悪影響を及ぼします。Rsyncは、少なくともすべてのファイルのメタデータをチェックして、変更されているかどうかを判断する必要があります。SSHFSの場合、これにはファイルごとにネットワークラウンドトリップが必要です。SSHを介したrsyncを使用すると、2つのサイドが並行して動作し、情報を一括で転送できます。これははるかに高速です。
アクセス制限の点では、SSHFSにはSFTPアクセスが必要ですが、rsyncにはシェルを介してコード(具体的にはrsyncプログラム)を実行する機能が必要です。ユーザーがシェルアカウントを持っていない場合、sftp-server
およびを含むいくつかのプログラムの実行のみを許可する特別なシェルをアカウントに提供することは可能であり、一般的rsync
です。参照してください。DOは、あなたがSCPのためのシェルがありますか?
新しいファイルをコピーするだけで、ファイルの数が非常に少ない場合、パフォーマンスに意味のある違いはありません。
SSHFSは、ファイルシステムがマウントされるとSSH接続を確立し、マウントが解除されるまでその接続を保持します。Rsyncは実行するたびに新しい接続を作成しますが、単一のメイン接続で多重化機能とピギーバックを使用して、毎回認証を回避できます。
SSHFSはFUSEファイルシステムであるため、従来のUnixメタデータとACLのみをサポートしています。Rsyncは拡張属性を転送できます(rsync -aAX
プレーンを使用すると、-a
従来のUnixメタデータのみが保持されることに注意してください)。
sshfs
接続ではなくマウントされたフォルダーの場合も同じですか?ご覧ください:unix.stackexchange.com/q/544404/198423 @Gilles
主な質問に答えるには:はい、違いがあります。でsshfs
安全なチャネルが設定されていることを、セキュアなチャネルを介しやssh越しのrsyncでリモートファイルへのアクセスを許可する既存の接続があり、リモートのrsyncインスタンスに話には。
2番目の質問に答える:リモートシステムのrsyncは同期を必要としないファイルを見つけるためのインテリジェンスを提供しますが、主にそれが並行して実行されるためその情報を収集するためのローカルrsync。
両方の方法のセキュリティは、sshパラメータ(キー長、アルゴリズム)の構成が同じであると仮定した場合です。ソースシステムと宛先システムのデフォルトは、これらのシステムのディストリビューションの組み合わせによって異なります。
rsync --no-whole-file /mounted/file.tar.gz /home/local/file.tar.gz
。rsync
この操作に使用する場合、変更された部分のみを転送するためのチェックサムの計算中に、rsync
ファイル全体を読み取る必要があります。これにより、更新されたセクションだけでなく、完全なデータがダウンロードされますか?@ギルズ