我如何使用 scp
将远程文件夹复制到本地主机?
我使用 ssh
登录到我的服务器。
然后,我想将远程文件夹 foo
复制到本地路径 /home/user/Desktop
。
我应该如何操作?
我如何使用 scp
将远程文件夹复制到本地主机?
我使用 ssh
登录到我的服务器。
然后,我想将远程文件夹 foo
复制到本地路径 /home/user/Desktop
。
我应该如何操作?
scp -r user@your.server.example.com:/path/to/foo /home/user/Desktop/
如果在foo路径末尾不包含'/'符号,你将复制整个目录(包括内容),而不仅仅是目录的内容。
从man scp
(参见在线手册)
-r 递归复制整个目录
-C
选项可以进行压缩,使用-c
选项可以传递其他加密类型以获得更好的性能,例如scp -c blowfish a@b:something .
参见dimuthu的回答。 - AutomaticoDesktop/foo
还是 Desktop/Foo文件夹中的所有内容
?有时候scp的行为看起来很奇怪,它做一件事,然后又做另一件事。 - Toskanscp -r user@your.server.example.com:/path/to/foo /home/user/Desktop/
пјЊдЅ дјљеѕ—е€°Desktop/foo
。使用命令scp -r user@your.server.example.com:/path/to/foo/. /home/user/Desktop/
пјЊдЅ дјљеѕ—е€°Desktop
дёfoo
文件夹下的所有内容和еђз›®еЅ•гЂ‚ - Ioannis要充分利用scp的功能,您需要按照以下步骤进行操作:
然后,例如,如果您有这个~/.ssh/config文件:
Host test
User testuser
HostName test-site.example
Port 22022
Host prod
User produser
HostName production-site.example
Port 22022
您可以通过这种方式免去输入密码并使scp语法更加简化:
scp -r prod:/path/foo /home/user/Desktop # copy to local
scp -r prod:/path/foo test:/tmp # copy from remote prod to remote test
此外,您还将能够使用远程路径补全功能:
scp test:/var/log/ # press tab twice
Display all 151 possibilities? (y or n)
为了启用远程bash命令补全,您需要在<源>
和<目标>
主机上都安装bash-shell,并确保bash-completion正常工作。有关更多信息,请参见相关问题:
将所有内容从本地位置复制到远程位置(上传)
scp -r /path/from/local username@hostname:/path/to/remote
将所有内容从远程位置复制到本地位置(下载)
scp -r username@hostname:/path/from/remote /path/to/local
自定义端口,其中xxxx
是自定义端口号码
scp -r -P xxxx username@hostname:/path/from/remote /path/to/local
从远程到本地拷贝至当前目录
scp -r username@hostname:/path/from/remote .
帮助:
-r
:递归复制所有目录和文件。/
的完整位置,通过pwd
获取完整位置/路径。scp
将替换所有现有文件。hostname
将是主机名或IP地址。-P端口号
。注意:有时防火墙不允许自定义端口,导致自定义端口无法使用。因此,请确保在防火墙中允许自定义端口进行入站和出站连接。
pwd
命令获取当前路径并在同一位置操作。 - Shiv Singh我一直使用的是:
scp -r username@IP:/path/to/server/source/folder/ .
. (点):表示当前文件夹
。因此只需从服务器复制并粘贴到此处。
IP:可以是像125.55.41.311
这样的IP地址,也可以是主机名,例如ns1.mysite.example
。
.
代表当前目录! - ericmjl最好先在远程服务器上压缩目录:
tar czfP backup.tar.gz /path/to/catalog
其次,从远程下载:
scp user@your.server.example.com:/path/to/backup.tar.gz .
最后,提取文件:
tar -xzvf backup.tar.gz
scp -C a@b:bigfile .
。 - Automatico典型场景,
scp -r -P port username@ip:/path-to-folder .
使用示例进行解释:
scp -r -P 27000 abc@10.70.12.12:/tmp/hotel_dump .
其中,
port = 27000
username = "abc" , remote server username
path-to-folder = tmp/hotel_dump
. = current local directory
如果你需要从远程位置下载大量文件,并且不太关心安全问题,那么尝试将scp的默认加密方式(Triple-DES)更改为'blowfish'之类的加密方式。
这将大大缩短文件复制时间。
scp -c blowfish -r user@your.server.example.com:/path/to/foo /home/user/Desktop/
如果您遇到“Too many authentication failures”错误,请指定您添加到服务器ssh服务器的确切SSH密钥:
scp -r -i /path/to/local/key user@remote.tld:/path/to/folder /your/local/target/dir
scp
命令将远程文件夹复制到本地。
$ scp -r userRemote@remoteIp:/path/remoteDir /path/localDir
但这里有更好的方法,可以使用sftp
进行操作 - SSH文件传输协议(也称安全文件传输协议或SFTP)是一种网络协议,可在任何可靠数据流上提供文件访问、文件传输和文件管理。(wikipedia).
$ sftp user_remote@remote_ip
sftp> cd /path/to/remoteDir
sftp> get -r remoteDir
从/path/to/remoteDir获取到localDir 100% 398 0.4KB/s 00:00
要了解有关sftp
命令的帮助,请键入help
或?
。
mc
:按下TAB
键,输入cd sh://USER@HOST
,使用mc
快捷键,完成后输入cd
退出。 - sjasmc
中,使用菜单上的 左/右 更容易,进入 Shell 链接,您可以在其中输入您在~/.ssh/config
中拥有的别名,例如myhost:
> 确定。 - ccpizza