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

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

我如何做到这一点?


当前回答

典型场景,

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

用样品解释,

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

哪里

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

其他回答

我不知道为什么,但我必须在源服务器指令之前使用本地文件夹。让它发挥作用

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

典型场景,

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

用样品解释,

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

哪里

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

要使用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文件名选项卡完成

对于Windows操作系统,我们使用了此命令。

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

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

tar czfP backup.tar.gz /path/to/catalog

其次,从远程下载:

scp user@your.server.example.com:/path/to/backup.tar.gz .

最后,提取文件:

tar -xzvf backup.tar.gz