Transferring files over SSH
我正通过命令行ssh连接到远程服务器,并尝试使用scp命令将目录复制到本地计算机上。但是,远程服务器返回此"用法"消息:
1 2 3 4 5
| [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]可以用于上载?
你需要在某个地方做点什么。你有scp ./styles/,所以你说的是安全拷贝./styles/,但不是拷贝到哪里。
一般来说,如果你想下载,它会:
1 2
| # download: remote -> local
scp user@remote_host:remote_file local_file |
其中,local_file实际上可能是一个目录,用于放置要复制的文件。要上传,则相反:
1 2
| # upload: local -> remote
scp local_file user@remote_host:remote_file |
如果要复制整个目录,则需要-r。把scp想象成cp,除了可以用user@remote_host:file指定一个文件,也可以只指定本地文件。
编辑:如注释中所述,如果本地主机和远程主机上的用户名相同,那么在指定远程文件时可以忽略该用户。
- 请注意,如果远程主机和本地主机上的用户相同,则可以省略用户名:scp hello.c myserver.net:~/projects/
- 是的,是的,我会加一个注释。我包括了用户,因为我给出的示例总是有效的。:)
- 我在这件事上很难…是这样吗?scp c:filename.txt server1@server2:home
- 请在"donload"和"upload"上添加粗体格式。
- "自然"(我自然这么说是因为我在这上面浪费了15分钟)在尝试"下载"到本地时,您不应该连接到远程主机,因为如果您从远程实例执行代码,"本地"将被解释为"远程",如果您明白我的意思。所以不要先运行ssh。
- -P代表端口/-R代表文件夹压顶
- 确保将端口作为scp -P port local_file user@remote_host:remote_file和scp -P port user@remote_host:remote_file local_file通过。
- +我一直在想这个。我喜欢这个答案非常清楚地定义了传递方向和参数顺序。
- 如果您要使用凭据,请不要忘记设置-i标志:scp-i rsa_file_path user@remote_host:remote_file local_文件。建议您不要使用密码。
如果要复制到台式机或从台式机复制,请使用winscp;如果在Linux上,Nautilus通过"连接到服务器"选项支持scp。
scp只能将文件复制到运行sshd的计算机上,因此需要从运行scp的计算机上运行远程计算机上的客户机软件。
如果在命令行上复制,请使用:
1 2
| # copy from local machine to remote machine
scp localfile user@host:/path/to/whereyouwant/thefile |
或
1 2
| # copy from remote machine to local machine
scp user@host:/path/to/remotefile localfile |
- 你就是那个人。我在不到10秒内部署了一个博客,服务器端没有任何额外的安装!
- 这很管用。我在cmd中使用了msysgit,因为它同时具有scp和ssh。
- 这很管用。我使用了scp*user@host:/path/to/where
- 这应该是最重要的答案。
- 如果我的笔记本电脑上有一个文件(使用终端的Mac电脑),我肯定会运行命令,将文件从该文件复制到我想要的服务器上。远程服务器如何访问未设置为某种服务器的笔记本电脑?当我尝试这个的时候,我得到了-拒绝许可(publickey),我认为我需要让我的登录以某种方式自动化,因为我每次登录时都要传递路径到我的密钥。
- 感谢WinCP的建议。比手动编写所有这些命令容易得多…
- 很好地提到Nautilus集成了SCP。临时转移要比乱搞码头容易得多。基本上,您的服务器连接就像一个卷一样被挂载。
- 有没有Linux替代winscp?
您需要同时指定源和目标,如果您想复制目录,应该查看-r选项。
因此,要递归地将/home/user/从远程服务器复制到当前目录:
1
| scp -pr user@remoteserver:whatever . |
不,不管你用哪种方式复制,你还是需要用scp [from] [to]。
不同的是,你需要
- -p的目的是什么?
- 从man scp中:保留原始文件的修改时间、访问时间和模式。
- 显然,这里只包括-p,因为op在其原始问题中包含了标志。这与答案没有任何关系