关于scp:通过SSH传输文件

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指定一个文件,也可以只指定本地文件。

编辑:如注释中所述,如果本地主机和远程主机上的用户名相同,那么在指定远程文件时可以忽略该用户。


如果要复制到台式机或从台式机复制,请使用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


您需要同时指定源和目标,如果您想复制目录,应该查看-r选项。

因此,要递归地将/home/user/从远程服务器复制到当前目录:

1
scp -pr user@remoteserver:whatever .

不,不管你用哪种方式复制,你还是需要用scp [from] [to]

不同的是,你需要