"cp: failed to access ‘user@remote/home/file’: Not a directory" when copying a file over ssh, using cp file user@remove syntax

I am trying to copy a file over from my machine to my personal space on a university server. On my machine, the file is located at /home/karnivaurus/file.pdf.

If I connect to the server with ssh [email protected], and then run pwd, it prints /homes/karnivaurus. If I run ls, it just displays one directory, foo. What I want to do then, is to copy this file over to the directory /homes/karnivaurus/foo.

So, after exiting the ssh, I enter the local home directory /home/karnivaurus. I then run the command cp paper.pdf [email protected]/foo/paper.pdf, but this returns the error message cp: failed to access ‘[email protected]/homes/karnivaurus/paper.pdf’: Not a directory. I have also tried running cp paper.pdf [email protected]/homes/karnivaurus/foo/paper.pdf, but this gives me the same error message.

What am I doing wrong?


Use scp

DESCRIPTION
     scp copies files between hosts on a network.  It uses ssh(1) for data
     transfer, and uses the same authentication and provides the same security
     as ssh(1).

The basic syntax is essentially the same as that of cp

scp paper.pdf [email protected]:/homes/karnivaurus/foo/

or

scp paper.pdf [email protected]:~/foo/

Some other ways to transfer files when you have ssh access:

  • rsync:

    rsync -av paper.pdf [email protected]:/where/to/put/
    

    replace /where/to/put/ with your desired directory name, it can be a filename too if you want to rename the file on the remote host given the intermediate directories exist.

    rsync has a big advantage over scp that it uses the delta transfer algorithm, so if for some reason the transfer halted in the middle, you can resume the transfer from that place again using rsync.

  • Direct ssh:

    ssh [email protected] 'cat >/where/to/put/paper.pdf' <paper.pdf
    

    Here transferring the file with direct ssh, sending the input file on STDIN of ssh, which is forwarded to the remote command and running the command cat >/where/to/put/paper.pdf on the remote host. After operation the file will be available as /where/to/put/paper.pdf on server.uni.ac.uk, change the path to meet your need.