sftp がこれを行う理由はわかりませんが、宛先ディレクトリが既に存在する場合にのみ再帰コピーを実行できます。では、これを実行してください...
sftp> mkdir bin
sftp> put -r bin
修正 :私は当初、OpenSSH が put -r をサポートしていないと誤って主張しました .それはそうですが、非常に奇妙な方法でそれを行います。ソース ディレクトリと同じ名前の宛先ディレクトリが既に存在することを期待しているようです。
sftp> put -r source
Uploading source/ to /home/myself/source
Couldn't canonicalize: No such file or directory
etc.
sftp> mkdir source
sftp> put -r source
Uploading source/ to /home/myself/source
Entering source/
source/file1
source/file2
特に奇妙なのは、宛先に別の名前を付けた場合にもこれが適用されることです:
sftp> put -r source dest
Uploading source/ to /home/myself/dest
Couldn't canonicalize: ...
sftp> mkdir dest
sftp> put -r source dest
Uploading source/ to /home/myself/dest/source
Couldn't canonicalize: ...
sftp> mkdir dest/source
sftp> put -r source dest
Uploading source/ to /home/myself/dest/source
Entering source/
source/file1
source/file2
より適切に実装された再帰 put について 、PuTTY psftp を使用できます 代わりにコマンド ライン ツールを使用します。 putty-tools にあります Debian (およびおそらく Ubuntu) の下のパッケージ。
あるいは、GUI を使用したい場合は、Filezilla があなたの望むことを行います。
rsync の使用に興味があるかもしれません 代わりは。そのためのコマンドは
rsync --delete --rsh=ssh -av bin/ remote-ip-or-fqdn:/home/earlz/blah/bin/
これにより、bin/ のすべてがコピーされます /home/earlz/blah/bin/ のリモート サーバーに配置します。 .追加の利点として、リモート側のファイルが変更されていないかどうかを最初に確認し、変更されていない場合は再送信しません。さらに、-z オプションを追加すると、圧縮されます。