
sshfsを介してマウントされたリモートサーバーにディレクトリがありますremote1
。かなり大きい(〜50M)リモートディレクトリにいくつかのファイルの新しいバージョンをインストールしています。
私は現在使用しています
rsync -a --in-place local/file.so remote1/file.so~new
ファイルをリモートディレクトリにコピーし、
rsync -a --in-place remote1/file.so~new remote1/file.so
。
2番目のrsyncは私が望むものより遅いです。リモートシステムにファイルデータをコピーするのではなく、sshを介してファイルデータをダウンロードしてから再アップロードするようです。
私はこのfile.so~new
ファイルをバックアップとして保持することを好むので(新しいファイルと元のファイルを切り替えます)mv
。
リモートホストにrsyncプログラムがないため、標準のrsyncコマンドを使用しませんが、ファイルがすでに存在する場合は、ファイルの再コピーを避けるためにrsyncを使用しています。
コピー速度を上げるコマンドラインオプションはありますか? scpやsftpを使う方が良いでしょうか?それでは、ファイルがすでに場所にあるときに不要なコピーを作成しないようにファイルが変更されていない(時間とサイズ)、どうすれば確認できますか?
最近の改善点は、2つの新しいコピーをアップロードし、mv
そのうちの1つの名前を変更することです。もっと良い方法はありませんか?
答え1
rsync
同じホストの送信元と宛先にアクセスしていると思うときは、デルタ転送を使用しません。代わりにファイル全体をコピーします。
これがあなたの状況です。したがって、2番目のコマンドはfile.so~new
SSHヒューズリンクをlocalhostにコピーしてからすぐに再コピーすることです。
代わりに使用しても問題ありませんか?
mv remote1/file.so~new remote1/file.so
最大速度を得るには、実行を試みるのではなく、rsync
リモートsshfs
サーバーと直接通信することを許可する必要があります(経由ssh
)。その後、単純なバリエーションを使用できます。
rsync -av local/file.so remote:path/to/file.so
新しいファイルは完全にコピーされるまでインストールされず、古いライブラリを新しいライブラリの基礎として使用できるという利点があります。