我正在命令行上连接到远程服务器,并尝试使用scp
命令将目录复制到本地计算机上。但是,远程服务器返回此“使用”消息:
[Stewart:console/ebooks/discostat] jmm% scp -p ./styles/
usage: scp [-1246BCEpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
[-l limit] [-o ssh_option] [-P port] [-S program]
[[user@]host1:]file1 [...] [[user@]host2:]file2
[Stewart:console/ebooks/discostat] jmm%
我希望能够双向传输文件。根据我的阅读,我认为上面的命令可以用于下载,scp -p [localpath] [remotepath]
用于上传?
答案 0 :(得分:699)
你需要scp
某处。您有scp ./styles/
,因此您说的是安全副本./styles/
,而不是将其复制到的位置。
通常,如果您想下载,它将会:
# download: remote -> local
scp user@remote_host:remote_file local_file
其中local_file
实际上可能是放置您正在复制的文件的目录。要上传,则相反:
# upload: local -> remote
scp local_file user@remote_host:remote_file
如果要复制整个目录,则需要-r
。将scp
视为cp
,除了您可以指定包含user@remote_host:file
的文件以及本地文件。
编辑:如评论中所述,如果本地和远程主机上的用户名相同,则在指定远程文件时可以省略用户。
答案 1 :(得分:154)
如果要复制到桌面计算机,请使用WinSCP,或者如果在Linux上,Nautilus通过“连接到服务器”选项支持SCP。
scp只能将文件复制到运行sshd的计算机上,因此您需要在运行scp的远程计算机上运行客户端软件。
如果在命令行上复制,请使用:
# copy from local machine to remote machine
scp localfile user@host:/path/to/whereyouwant/thefile
或
# copy from remote machine to local machine
scp user@host:/path/to/remotefile localfile
答案 2 :(得分:22)
您需要同时指定源和目标,如果要复制目录,则应查看-r选项。
所以递归地将/ home / user /以及从远程服务器复制到当前目录:
scp -pr user@remoteserver:whatever .
答案 3 :(得分:17)
不,你仍然需要scp [from] [to]
无论你复制哪种方式
区别在于,您需要scp -p server:serverpath localpath