协慌网

登录 贡献 社区

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

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

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

怎么做到这一点?

答案

scp -r [email protected]:/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-completion,您需要在<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. 。 (点) - 它表示当前工作目录,因此从服务器下载 / 复制并仅粘贴此处。

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