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

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

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

我该如何实现?

答案

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

来自man scp (请参阅在线手册

-r 递归复制整个目录

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

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

然后,例如,如果您具有〜/ .ssh / config

Host test
    User testuser
    HostName test-site.com
    Port 22022

Host prod
    User produser
    HostName production-site.com
    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-completion。有关更多信息,请参见相关问题:

使用 scp 时如何为远程路径启用自动补全功能?
SCP 文件名选项卡完成

要将所有内容从本地复制到远程位置 (上传)

scp -r /path/from/destination username@hostname:/path/to/destination

要将所有内容从 “ 远程位置”复制到本地位置 (下载)

scp -r username@hostname:/path/from/destination /path/to/destination

自定义端口,其中xxxx自定义端口

scp -r -P xxxx username@hostname:/path/from/destination /path/to/destination

在当前目录上从远程复制到本地

scp -r username@hostname:/path/from/file .

救命:

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

注意:有时由于防火墙中不允许使用自定义端口,因此请确保防火墙中不允许使用该自定义端口进行传入和传出连接

我一直使用的是:

scp -r username@IP:/path/to/server/source/folder/  .

。 (点) :表示current folder 。因此,请从服务器复制并仅粘贴到此处。

IP :可以是125.55.41.311类的 IP 地址,也可以是ns1.mysite.com类的ns1.mysite.com

最好先在远程服务器上压缩目录:

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 默认加密(Triple-DES)更改为 “blowfish”。

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

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 = 27000
username = "abc" , remote server username
path-to-folder = tmp/hotel_dump
. = current local directory

转到统一工具栏上的文件

在此处输入图片说明

按 Ctrl + l 并在此处输入_goes_your_user_name@192.168.10.123

192.168.1.103 是您要连接的主机。

这里一个例子

在此处输入图片说明

如果您遇到“身份验证失败太多” 的情况 ,请指定添加到服务器 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的更好方法sftp文件传输协议(也称为安全文件传输协议或 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?