如何使用scp将文件夹从远程复制到本地?

如何使用scp将文件夹从远程复制到本地主机?

我使用ssh登录我的服务器。
然后,我想复制远程文件夹foo到本地/home/user/Desktop

我如何实现这一点?

2933911 次浏览
scp -r user@your.server.example.com:/path/to/foo /home/user/Desktop/

通过在foo末尾不包含尾随'/',您将复制目录本身(包括内容),而不仅仅是目录的内容。

man scp(见在线手册

-r递归复制整个目录

要使用scp的全部功率,您需要执行以下步骤:

  1. 公钥授权
  2. 创建SSH别名

然后,例如,如果您有此~/. ssh/config接口说明

Host testUser testuserHostName test-site.examplePort 22022
Host prodUser produserHostName production-site.examplePort 22022

您将从密码输入中拯救自己并简化scp语法,如下所示:

scp -r prod:/path/foo /home/user/Desktop   # copy to localscp -r prod:/path/foo test:/tmp            # copy from remote prod to remote test

更重要的是,您将能够使用远程路径完成:

scp test:/var/log/  # press tab twiceDisplay all 151 possibilities? (y or n)

要启用远程bash完成,您需要在<source><target>主机上都有bash-shell,并正常工作bash完成。有关更多信息,请参阅相关问题:

使用scp时如何启用远程路径的自动完成?
SCP文件名选项卡完成

最好先在远程服务器上压缩曲库:

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 -r username@IP:/path/to/server/source/folder/  .

.(点):这意味着current folder。所以从服务器复制并粘贴在这里。

ip:可以是像125.55.41.311这样的IP地址,也可以是像ns1.mysite.example这样的主机。

如果您有一个地狱般的文件要从远程位置下载,如果您不太关心安全性,请尝试将scp默认加密(Triple-DES)更改为“河豚”之类的东西。

这将大大减少文件复制时间。

scp -c blowfish -r user@your.server.example.com:/path/to/foo /home/user/Desktop/

典型场景,

scp -r -P port username@ip:/path-to-folder  .

用样本解释,

scp -r -P 27000 abc@10.70.12.12:/tmp/hotel_dump .

在哪里,

port = 27000username = "abc" , remote server usernamepath-to-folder = tmp/hotel_dump. = current local directory

转到Unity工具栏上的文件

在此处输入图像描述

按Ctrl+l并写入here_goes_your_user_name@192.168.10.123

192.168.1.103是要连接的主机。

这里有一个例子

在此处输入图像描述

我不知道为什么,但我不得不在源服务器指令之前使用本地文件夹。使其工作

scp -r . root@888.888.888.888:/usr/share/nginx/www/example.org/

本地位置复制到远程定位(上传)

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 .

帮助:

  1. -r递归复制所有目录和文件
  2. 始终使用/的完整位置,通过pwd获取完整位置/路径
  3. scp将替换所有现有文件
  4. hostname将是主机名或IP地址
  5. 如果需要自定义端口(除了端口22),请使用-P PortNumber
  6. .(点)-表示当前工作目录,因此从服务器下载/复制并仅粘贴在此处。

备注:有时由于防火墙中不允许端口,自定义端口将无法工作,因此请确保防火墙中允许自定义端口用于传入和传出连接

问题是如何使用scp命令将文件夹从远程复制到本地。

$ scp -r userRemote@remoteIp:/path/remoteDir /path/localDir

但是这里有更好的方法来做到这一点sftp-SSH文件传输协议(也是安全文件传输协议,或SFTP)是一种网络协议,它提供文件访问,文件传输和文件管理任何可靠的数据流。

$ sftp user_remote@remote_ip

sftp> cd /path/to/remoteDir

sftp> get -r remoteDir

Fetching /path/to/remoteDir to localDir 100% 398 0.4KB/s 00:00

有关sftp命令的帮助,只需键入help?

如果您遇到“太多身份验证失败”,请指定您添加到serverssh服务器的确切SSH密钥:

scp -r -i /path/to/local/key user@remote.tld:/path/to/folder /your/local/target/dir

对于Windows OS,我们使用此命令。

pscp -r -P 22 hostname@IP:/path/to/Downloads   ./

问题的前提是不正确的。想法是,一旦登录到ssh,如何将文件从登录机器移动回登录的客户端。然而,scp不知道也不能使用ssh连接。它正在建立自己的连接。所以简单的解决方案是在本地工作站上创建一个新的终端窗口,并运行scp将文件从远程服务器传输到本地机器。例如,scp-i键user@remote:/远程目录/远程文件 /local-dir/local-file