1

I am using psftp's put command to upload files. I am not providing the filename in destination location assuming that the file will be copied with the same name. Here's the help page of put command

psftp> help put
put [ -r ] [ -- ] <filename> [ <remote-filename> ]
Uploads a file to the server and stores it there under
the same name, or under a different one if you supply the
argument <remote-filename>.
If -r specified, recursively store a directory.

If I try to use PUT without filename in the destination location, psftp throws the error open for write: failure

psftp> open user@host
Using username "user".
Remote working directory is /
psftp> put <file_name> ./<dir>/
/<dir>: open for write: failure

Whereas if I provide the filename in the destination location, it works

psftp> put <file_name> ./<dir>/<file_name>
local:<file_name> => remote:/<dir>/<file_name>

Why does the PUT command require filename in the destination location?

Martin Prikryl
  • 188,800
  • 56
  • 490
  • 992
user3086551
  • 405
  • 1
  • 4
  • 13

1 Answers1

1

What the help page means that the whole <remote-filename> argument is optional, not filename part of the argument.

So you can do this

put <file_name>

It uploads the file to the current remote working directory, under the same file name.


But you cannot do:

put <file_name> ./<dir>/

You can do this though:

cd ./<dir>
put <file_name>
Martin Prikryl
  • 188,800
  • 56
  • 490
  • 992