题 如何将文件夹从远程scp到本地? [关闭]


我不确定是否可能 scp 从远程到本地的文件夹,但我仍然没有其他选项。我使用ssh登录我的服务器,然后从那里我想复制该文件夹 foo 至 home/user/Desktop (我的当地人)。有没有命令让我可以这样做?


1931
2017-07-03 05:17


起源


@ 3bdalla这个问题绝对是关于堆栈溢出的主题,其中包括有关“程序员常用的软件工具”的问题。 - Abhi Beckert
OP的问题是是否可以将文件从远程复制到本地主机 ssh'd远程主机。我不确定为什么没有一个答案正确地解决了他/她的问题。 - JeffDror
Stack Overflow是一个编程和开发问题的站点。这个问题似乎是偏离主题的,因为它不是关于编程或开发。看到 我在这里可以问什么主题 在帮助中心。也许 超级用户 要么 Unix和Linux堆栈交换 会是一个更好的地方。另见 我在哪里发布有关Dev Ops的问题? - jww
请参见 meta.stackoverflow.com/questions/294217/...。问题仍在这里,你也可以投票。它只是不允许更多的答案。 - Andre Figueiredo
我提出这个问题是为了抗议这个被关闭的问题! - gota


答案:


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

man scp

-r Recursively copy entire directories

3706
2017-07-03 05:21



使用-p来保存文件修改时间,权限等! scp -pr user @ ... - Ber
这个答案缺乏重要的解释。你最终会结束吗? Desktop/foo 或者你会 Desktop/allcontentsofFooGohere scp似乎有时对我来说很奇怪它会做另一件事 - Toskan
例如这个(通常在shell脚本中使用): su myuser -c "scp -r /var/www/myapp.org/uploads root@$jcrdevip:/var/www/mydevapp.com/uploads" 将内容从上传复制到上传。 scp -r /var/www/myapp.org/uploads root@$jcrdevip:/var/www/mydevapp.com/uploads 似乎将文件夹上传复制到了 mydevapp.com/uploads 文件夹创建不需要的子文件夹 - Toskan
@jww正如你所看到的,这个答案有超过3千个赞成票。可能是这个问题,人们真的需要答案吗? - Mikhail Morgunov
截至20180724,这个问题和答案是查询的前2个点击:'scp copy a dir',对于开发人员来说,这是'非主题'似乎很遗憾 - 我确信没有任何unix开发者想要做这样的事情: ) - decuser


使用全功率 SCP 你需要经历下一步:

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

然后,例如,如果你有这个 的〜/ .ssh /配置

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,您需要在两者上都有bash-shell <source> 和 <target> 主机,并正确地工作bash完成。有关更多信息,请参阅相关问题

如何在使用scp时为远程路径启用自动完成功能?
SCP文件名标签完成


236
2017-12-04 06:21



不知道配置文件,这真棒! - dmastylo
选项卡完成是无稽之谈,只需从本地主机完成。 - Bernhard
@ b.long问题是“如何将远程文件夹foo复制到本地桌面”。我的回答是 “scp -r prod:/ path / foo / home / user / Desktop”。希望你能看到关系。 - Alexander Yancharuk
@Bernhard对我来说很明显因为我正在使用bash-shell。谢谢你指点我!答案已更新。 - Alexander Yancharuk
@Alexander Yancharuk:谢谢你的答案,这比仅仅覆盖语法更详细。 - Gladiator


复制全部 本地位置 至 偏远的地点 (上传)

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. 。 (点)  - 它表示当前工作目录,因此从服务器下载/复制并仅在此处粘贴。

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


118
2018-05-23 09:38



看来(至少在Raspbian Jessie和Ubuntu的最新版本中)scp使用-P(大写P)作为端口,而(奇怪地)ssh使用-p(小写)。 - Adam Plocher
@AdamPlocher,你是对的,但大致我一直使用-p(小):) - Shiv Singh
-p保留用于保留“原始文件中的修改时间,访问时间和模式”。因此,如果您将其用于端口,则可能无法正常工作;-)除非您使用不同版本以不同方式使用小写字母p。 - Adam Plocher
用ssh,是的。不是用scp(我假设)。 - Adam Plocher
如果目录包含空格,我应该放什么? - hyprfrcb


我一直用的是:

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

。 (点) : 它的意思是 current folder。所以从服务器复制并粘贴到此处。

IP :可以是一个IP地址 125.55.41.311 或者它可以像主机一样 ns1.mysite.com


39
2018-06-10 07:41



谢谢你指出这一点 . 指当前目录! - ericmjl


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

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

其次,从远程下载:

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

最后,解压缩文件:

tar -xzvf backup.tar.gz

25
2018-05-29 11:12



“更好”在很大程度上取决于您正在传输的数据以及ssh到服务器进行压缩/解压缩的工作量。而且:你可以用scp向scp添加压缩 -C国旗,喜欢 scp -C a@b:bigfile .。 - Automatico
这让我想起@cptloop发表的评论! :d xkcd.com/1168 - GoodSp33d


如果您有一个可以从远程位置下载的文件,如果您不太关心安全性,请尝试将scp默认加密(Triple-DES)更改为“blowfish”。

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

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

20
2018-06-17 06:02



根据 这篇博文 你可以获得更好的表现 arcfour 代替 blowfish,但它有安全漏洞。 - Automatico


转到统一工具栏上的文件

enter image description here

按Ctrl + l并写入here_goes_your_user_name@192.168.10.123

192.168.1.103是您要连接的主机。

这里有一个例子

enter image description here


15
2017-11-09 21:05