我正在尝试将文件从我的机器复制到我在大学服务器上的个人空间。在我的机器上,该文件位于/home/karnivaurus/file.pdf.
如果我使用 连接到服务器ssh karnivaurus@server.uni.ac.uk,然后运行pwd,它会打印/homes/karnivaurus. 如果我运行ls,它只显示一个目录,foo. 然后我想做的是将此文件复制到目录/homes/karnivaurus/foo.
所以,退出 ssh 后,我进入本地主目录/home/karnivaurus。然后我运行该命令cp paper.pdf karnivaurus@server.uni.ac.uk/foo/paper.pdf,但这会返回错误消息cp: failed to access ‘karnivaurus@shell1.doc.ic.ac.uk/homes/karnivaurus/paper.pdf’: Not a directory。我也试过 running cp paper.pdf karnivaurus@server.uni.ac.uk/homes/karnivaurus/foo/paper.pdf,但这给了我同样的错误信息。
我究竟做错了什么?
ste*_*ver 28
用 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).
Run Code Online (Sandbox Code Playgroud)
基本语法与 cp
scp paper.pdf karnivaurus@server.uni.ac.uk:/homes/karnivaurus/foo/
Run Code Online (Sandbox Code Playgroud)
或者
scp paper.pdf karnivaurus@server.uni.ac.uk:~/foo/
Run Code Online (Sandbox Code Playgroud)
hee*_*ayl 14
在您有权ssh访问时传输文件的其他一些方法:
rsync:
rsync -av paper.pdf karnivaurus@server.uni.ac.uk:/where/to/put/
Run Code Online (Sandbox Code Playgroud)
替换/where/to/put/为您想要的目录名,如果您想在存在中间目录的情况下重命名远程主机上的文件,它也可以是文件名。
rsync与scp使用 delta 传输算法相比,它有一个很大的优势,因此如果由于某种原因传输在中间停止,您可以使用 再次从该位置恢复传输rsync。
直接ssh:
ssh karnivaurus@server.uni.ac.uk 'cat >/where/to/put/paper.pdf' <paper.pdf
Run Code Online (Sandbox Code Playgroud)
这里使用 direct 传输文件,ssh在 STDIN 上发送输入文件ssh,将其转发到远程命令并cat >/where/to/put/paper.pdf在远程主机上运行该命令。手术后的文件将作为/where/to/put/paper.pdf上server.uni.ac.uk,改变以满足您的需求的路径。