6

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 karnivaurus@server.uni.ac.uk, 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 karnivaurus@server.uni.ac.uk/foo/paper.pdf, but this returns the error message cp: failed to access ‘karnivaurus@shell1.doc.ic.ac.uk/homes/karnivaurus/paper.pdf’: Not a directory. I have also tried running cp paper.pdf karnivaurus@server.uni.ac.uk/homes/karnivaurus/foo/paper.pdf, but this gives me the same error message.

What am I doing wrong?

Karnivaurus
  • 1,024
  • 3
  • 15
  • 34

2 Answers2

29

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 karnivaurus@server.uni.ac.uk:/homes/karnivaurus/foo/

or

scp paper.pdf karnivaurus@server.uni.ac.uk:~/foo/
steeldriver
  • 136,215
  • 21
  • 243
  • 336
14

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

  • rsync:

    rsync -av paper.pdf karnivaurus@server.uni.ac.uk:/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 karnivaurus@server.uni.ac.uk '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.

heemayl
  • 91,753