如何使用scp将文件夹从远程主机复制到本地主机?
我使用ssh登录到我的服务器。然后,我想将远程文件夹foo复制到local/home/user/Desktop。
我如何做到这一点?
如何使用scp将文件夹从远程主机复制到本地主机?
我使用ssh登录到我的服务器。然后,我想将远程文件夹foo复制到local/home/user/Desktop。
我如何做到这一点?
当前回答
我一直使用的是:
scp -r username@IP:/path/to/server/source/folder/ .
.(dot):表示当前文件夹。所以从服务器复制并粘贴到这里。
IP:可以是125.55.41.311这样的IP地址,也可以是ns1.mysite.example这样的主机。
其他回答
转到统一工具栏上的文件
按Ctrl+l并写入here_goes_your_user_name@192.168.10.123
192.168.1.103是您要连接的主机。
这里有一个例子
要使用scp的全部功能,您需要执行以下步骤:
公钥授权创建SSH别名
然后,例如,如果您有这个~/.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完成,您需要在<source>和<target>主机上都有bash shell,并正确地运行bash完成。有关更多信息,请参阅相关问题:
使用scp时如何启用远程路径的自动完成?SCP文件名选项卡完成
将所有本地位置复制到远程位置(上载)
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将替换所有现有文件主机名将是主机名或IP地址如果需要自定义端口(除了端口22),请使用-P端口号.(dot)-表示当前工作目录,因此只能从服务器下载/复制并粘贴到此处。
注意:有时由于防火墙中不允许该端口,自定义端口无法工作,因此请确保防火墙中允许自定义端口用于传入和传出连接
这个问题的前提是不正确的。其想法是,一旦登录ssh,如何将文件从登录的计算机移回登录的客户端。然而,scp不知道,也不能使用ssh连接。它正在建立自己的联系。因此,简单的解决方案是在本地工作站上创建一个新的终端窗口,并运行scp,将文件从远程服务器传输到本地计算机。例如,scp-i键user@remote:/remote dir/remote file/local dir/local file
scp -r user@your.server.example.com:/path/to/foo /home/user/Desktop/
通过在foo结尾不包含尾随的“/”,您将复制目录本身(包括内容),而不仅仅是目录的内容。
来自man scp(参见在线手册)
-r递归复制整个目录