v0.36.2
sshc v0.36.2
v0.36.2は、SFTPの転送が止まる不具合、CLIのsshc sftpがシンボリックリンクを含むディレクトリで失敗する退行、転送・操作の遅さを直し、更新日時と権限の扱いをWinSCPに揃える修正リリースです。
SFTP
-
転送キューが満杯になると新しい転送が拒まれ続ける問題を直しました。 キューは200件を保持し、満杯になると古い完了分を退避して新しい転送を入れます。アップロードの退避は途中の一時ファイルを片付けるためにそのホストへ接続していましたが、完了済みには一時ファイルが無いのに同じ経路を通り、そのホストへ届かない(到達不能、対話認証が必要など)と
sftp_transfer_limitで新しい転送が即座に失敗し、以後も止まったままでした。sshc sftp putを繰り返し使うと必ずこの状態になります。完了済みのアップロードは接続せずに退避するようにしました。 -
アップロードの書き込みを並列化しました。 これまでSFTPの書き込みは32 KiBを1往復ずつ送っていたため、往復50 msのホストでは1 MiBに約1.6秒かかっていました。ブラウザーからのアップロード、
sshc sftp put、ホスト間コピーの書き込み側が対象です。書き込みが途中で失敗した場合は、確認済みの位置まで一時ファイルを切り戻してから再開します。 -
同じ接続先への操作のあいだSFTP接続を再利用します。 これまで一覧、詳細、プレビュー、編集、CLIの
put/getのジョブごとにSSHを接続し直していました(鍵交換と認証、ワンタイムコードやProxyJumpも毎回)。直前に使った接続をホストごとに最長60秒保持し、次の操作へ渡します。フォルダーを移動するたび、ファイルを1つ転送するたびに待つことはなくなります。使わなくなった接続は60秒で閉じ、開いているTerminalと同じく、Vaultをロックしても直前の接続はこの時間だけ残ります。 -
sshc sftp put/getがシンボリックリンクを含むディレクトリでinvalid_responseになる退行を直しました。 v0.36.0で一覧に加えたリンク先の情報をCLIが受け付けず、リンクを1つでも含むディレクトリ(送り先の親ディレクトリの確認を含む)で失敗していました。 -
CLIの
put/getはシンボリックリンクをリンク先として転送します(WinSCPやscpと同じ)。ディレクトリへのリンクは中身ごと送ります。リンク先の無いリンク、ファイルでもディレクトリでもないもの、送っている途中のディレクトリへ戻るリンクは、その項目だけをskipとして標準エラーへ表示し、結果のskippedに数えます。これまでは1つでもあると転送全体が失敗していました。 -
転送したファイルに元の更新日時を付けます。 ブラウザーからのアップロード、CLIの
putとget、ホスト間コピー、ローカル(engineのディスク)との転送が対象です。これまでは転送した時刻になっていました。 -
新しくアップロードしたファイルの権限をサーバーの既定(umask)に従うようにしました。 これまでは
0600に固定していたため、他のユーザーやWebサーバーが読めないファイルになっていました。上書きしたファイルは従来どおり元の権限を保ちます。 -
CLIの
putは、送り先のディレクトリごとに一覧を1回だけ取得します。これまではファイル1つごとに親ディレクトリを取得し直していました。ファイル1つのputで送り先のディレクトリが無い場合はremote_directory_missingとして理由を示します。 -
一覧のファイルへのシンボリックリンクは、サイズに加えて更新日時もリンク先のものを表示します。
更新後に必要な操作
v0.36.0以降から更新する場合、追加の操作はありません。v0.35.0以前から更新する場合は、v0.36.0のリリースノートにあるブラウザーの再登録とengineの再起動が必要です。