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

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

如何做到这一点?

操作的问题是,当ssh连接到远程主机时,是否可以将文件从远程主机复制到本地主机。我不知道为什么没有一个答案能正确回答他/她的问题。

请参阅meta.stackoverflow.com/questions/294217/…。问题还在这里,你也可以投票。它只是不允许有更多的答案。

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

这个问题可能是个话题外的话题,但它也是谷歌排名最高的帖子。锁定意味着没有人可以更新它来提供更好的解决方案。

使用mc:TAB、cd sh://USER@HOST,使用mc快捷键,完成后cd退出。

我最近问了一个类似的"稍微深入"的问题,关于另一个超级用户工具的命令行,它被那里的mods移动到stackoverflow。不管怎样,我同意mods的观点:我们能把它转移到超级用户,请把它解锁,并有更多的答案进来吗?

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

来自man scp(见在线手册)

-r Recursively copy entire directories

我每次都用谷歌搜索这个。相关漫画:xkcd.com/1168

@gryphius使用时,我继续收到一个拒绝权限(publickey)错误。我如何解决这个问题?

@John-K,许多可能的原因(服务器上未启用SCP、公钥未授权、文件权限问题…)。首先检查标准ssh是否与您的密钥一起工作。请参考SOF/ServerFault上关于该主题的现有问题,如果没有帮助,请使用ssh/scp的调试输出在ServerFault上询问新问题。

您必须在两台计算机上都设置RSA密钥-您可能还必须在本地计算机上运行ssh-add。

我发现了两个很好的消息:-C标志增加了压缩,-C标志允许您传入其他密码类型以获得更好的性能,如dimuthu答案中所示的scp -c blowfish a@b:something .。

scp -r user@your.server.example.com:/path/to/foo/. /home/user/Desktop/foo始终复制和替换

使用-p保存文件修改时间、权限等!scp-pr用户@…

这个答案缺乏重要的解释。你最终会和Desktop/foo一起结束还是会让Desktop/allcontentsofFooGohereSCP看起来很奇怪,有时对我来说,它会做一件接着一件的事情

例如(通常用于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和scp -r user@your.server.example.com:/path/to/foo /home/user/Desktop/你应该以Desktop/foo结束。在scp -r user@your.server.example.com:/path/to/foo/. /home/user/Desktop/中,你将得到Desktop中foo的内容,以及Desktop中散布的foo的所有子目录。

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

公钥授权

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

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

不知道配置文件,这太棒了!

标签完成是胡说,只是完成从本地主机为我。

@B.long问题是"如何将远程文件夹foo复制到本地桌面"。我的答案是"scp-r prod:/path/foo/home/user/desktop"。希望你能看到关系。

@Bernhard远程选项卡完成是一个众所周知的过程。这对你来说是胡说八道:)

@可能是Alexanderyancharuk,但您的答案对我来说并不是这样,所以您的答案至少限于本地和/或主机上的某些版本。

@Bernhard对我来说很明显,因为我使用的是bash shell。谢谢你指点我!回答更新。

我的错误是@alexanderyancharuk,我以为你是在暗示OP(@slasengger)需要修改他的~/.ssh/config才能复制文件夹(这是不正确的)。现在我明白了,你正试图用无密码的ssh给他额外的便利。

@Alexander Yancharuk:感谢您的回答,这比只介绍语法更详细。

您还可以使用类似storm的工具来自动化向.ssh/config添加服务器的过程。

真的。。远程路径完成的关键点。我不知道。

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

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 .

帮助:

-r递归复制所有目录和文件

始终使用来自/的完整位置,由pwd获取完整位置。

scp将替换所有现有文件

hostname将是主机名或IP地址。

如果需要自定义端口(除了端口22),使用-P portnumber。

. (dot)-它是指当前的工作目录,所以只能从服务器下载/复制并粘贴到这里。

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

看起来(至少在RaspbianJessie和Ubuntu的最新版本中)scp使用-p(大写p)作为端口,而(奇怪的是)ssh使用-p(小写)。

@阿丹普勒,你是对的,但大致上我总是用-p(小):)

-p用于保存"修改时间、访问时间和原始文件中的模式"。因此,如果您将它用于端口,那么它可能不起作用;-),除非您有一个不同的版本,以不同的方式使用小写字母P。

对于ssh,是的。不适用于SCP(我想)。

如果目录包含空格,我应该放什么?

@hyprcrcb使用pwd获取位置并使用相同的位置

_port_可能指当地?如果两个端口都不同怎么办?

@Timo没关系,因为您将在ssh登录后执行scp。

@但是如果我远程到本地,我就不会登录。

我经常使用的是:

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

. (dot):表示current folder。所以从服务器复制并粘贴到这里。

IP:可以是像125.55.41.311这样的IP地址,也可以是像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

"更好"在很大程度上取决于您传输的数据以及ssh到服务器进行压缩/解压的工作。并且:您可以使用-C标志向scp添加压缩,比如scp -C a@b:bigfile .。

这让我想起了@cptloop的评论!:d xkcd.com/1168

如果您有一个地狱般的文件要从远程位置下载,如果您不太关心安全性,请尝试将SCP默认加密(三重DES)更改为类似"Blowfish"。

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

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

根据这篇博客文章,你可以用arcfour代替blowfish,获得更好的性能,但是它有安全缺陷。

转到Unity工具栏上的文件

按ctrl+l在这里写下"你的用户"name@192.168.10.123

192.168.1.103是要连接的主机。

这里有一个例子

这个答案帮助了我。谢谢您。。。

典型场景,

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

如果遇到"太多身份验证失败",请指定已添加到服务器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–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或?。

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

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

假设用户有权限,您可以在不使用root@的情况下执行绝对路径吗?

shell从服务器复制文件夹,关于shell:如何使用scp将文件夹从远程复制到本地?...相关推荐

  1. ssh 远程复制文件_如何在不输入密码的情况下通过SSH远程复制文件

    ssh 远程复制文件 SSH is a lifesaver when you need to remotely manage a computer, but did you know you can ...

  2. linux使用shell脚本利用expect工具实现SCP传输文件到多台服务器

    1.安装expect yum install expect 2.设置服务器地址,用户名,密码,源路径,目标路径 新建文件host.txt添加如下内容 192.168.0.135 root 密码 源路径 ...

  3. linux遍历目录删除指定文件,利用shell脚本遍历文件夹内所有的文件并作整理统计的方法-linux删除文件夹...

    本篇文章扣丁学堂Linux培训小编给读者们分享一下利用shell脚本遍历文件夹内所有的文件并作整理统计的方法,文章具有很好的参考价值,感兴趣的小伙伴就随小编来了解一下吧. 环境: Ubuntu下采用s ...

  4. linux scp 排除文件夹,scp复制文件时排除指定文件

    1. 前言 本文主要讲解如何在scp复制文件时排除指定文件. 举例: 我需要将所有*.c文件从名为hostA的电脑复制到hostB,包括所有目录.我使用以下scp命令,但不知道如何排除特定的文件(如* ...

  5. Linux服务器升级GLIBC失败导致shell不可用的问题解决经历

    问题发生 试图通过编译安装升级Linux服务器的glibc库版本,install失败以后,shell中的大部分命令(ls,cat,rm,cp,ln,scp,vi,yum等)都执行报错,尝试新的ssh连 ...

  6. shell之for和if实现批量替换多目录下的文件

    问题背景: 生产环境的项目图片文件夹众多,每个项目都会有一个图片文件夹,现在要批量替换每个文件夹下的一张模板图片 如图,我们要替换每一个文件夹下的01.jpg shell 脚本 #/bin/bash ...

  7. linux重定向多个文件,Linux base shell重定向详解

    一.标准输入,标准输出与标准错误输出 在linux shell执行命令时,每个进程都和三个打开的文件相联系,并使用文件描述符来引用这些文件.由于文件描述符不容易记忆,shell同时也给出了相应的文件名 ...

  8. linux创建文件内容三行,shell之创建文件及内容的方法示例

    shell之创建文件夹: [root@vbox-nginx shell_command]# vi ./mkdir.sh #!/bin/sh parentDir="/media/sf_Proj ...

  9. 服务器无法拖动文件复制文件,​IT服务器运维:艾锑人为您整理Win10系统下移动、复制、删除文件需要管理员权限的解决方法...

    影响我们一生百倍差距的四大效应 观察者效应:你的世界是什么样是由你的观察决定的. 这个效应是在[潜能突破]研习营课堂上发现的,我们有个练习叫三生万物,每个人都会成为一次观察者角色,当大家在成为其他角色 ...

最新文章

  1. python 检验数据正态分布程度_Python DataFrame 检验数据正态分布及平均值差异检验...
  2. 北大 AI 公开课 2019 | 颜水成:人工智能行业观察与实践
  3. ACM Doing Homework again
  4. 学生签到系统c代码_C语言实现简单学生学籍管理系统
  5. Java高级篇 -- List选择及优化
  6. Redux中的功能式React式编程简介
  7. 软件工程课程周学习进度报告——第六周
  8. 【Matlab学习笔记】【数学形态学】膨胀、腐蚀、开运算、闭运算、击中击不中变换
  9. 过拟合的原因以及如何解决
  10. 罗克露计算机组成原理书籍,计算机组成原理
  11. PYS60版短信搜索程序
  12. 线程池为啥要用阻塞队列
  13. FFmpeg的HEVC解码器源代码简单分析:CTU解码(CTU Decode)部分-PU
  14. Linux命令df和du
  15. Unity 0.Interactive Tutorials
  16. textarea 中的换行、空格; 如何处理
  17. 细说jbd(journal-block-device) 源码分析
  18. petalinux制作自动启动应用过程中遇到的问题解决
  19. 神秘永远的《加州旅馆》
  20. 岩棉夹芯板英标BS476-20BS476-22耐火测试

热门文章

  1. 《剑指offer》—— 42. 和为S的两个数字(Java)
  2. 在新版 Edge 中添加 IDM Integration Module
  3. 腾讯云COS全球加速,解决弱网传输慢的难题!
  4. 【Maven】私服搭建与使用:nexus,repository,mirror,distributionManagement
  5. 宏基因组测序结果分析中的名词汇总
  6. java lombok.getter_Lombok注解@Getter @Setter详解
  7. STS报错“HttpServlet cannot be resolved to a type”
  8. opencv人脸检测+美颜
  9. Python爬虫(一)—— 中国大学排名
  10. Springboot @EnableAutoConfiguration 详解